Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Markup / TemplateXamlTreeBuilder.cs / 1 / TemplateXamlTreeBuilder.cs
/****************************************************************************\
*
* File: TemplateXamlTreeBuilder.cs
*
* Purpose: Class that builds a template object from XAML
*
* History:
* 11/22/04: varsham Created
*
* Copyright (C) 2004 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.Xml;
using System.IO;
using System.Windows;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Windows.Threading;
using MS.Utility;
namespace System.Windows.Markup
{
///
/// XamlTree builder is the TreeBuilder implementation that loads a Tree
/// from XAML.
///
internal class TemplateXamlTreeBuilder : XamlTreeBuilder
{
#region Constructors
///
/// Constructor. Set up associated baml writer and xaml parser to
/// create the triumvarate needed for parsing a template block. This is
/// the main method to call to create the needed object graph for
/// parsing.
///
public TemplateXamlTreeBuilder(
ParserContext parserContext,
XamlReaderHelper tokenReader,
ReadWriteStreamManager streamManager,
ParserStack bamlReaderStack,
ArrayList rootList)
{
Debug.Assert(null != parserContext, "ParserContext is null");
Debug.Assert(null != tokenReader, "TokenReader is null");
Debug.Assert(null != parserContext.XamlTypeMapper, "ParserContext.XamlTypeMapper is null");
Debug.Assert(null != streamManager, "StreamManager is null");
// Fetch the previous BamlRecordReader
XamlTreeBuilderBamlRecordWriter previousBamlRecordWriter =
(XamlTreeBuilderBamlRecordWriter)tokenReader.ControllingXamlParser.BamlRecordWriter;
BamlRecordReader previousBamlRecordReader = previousBamlRecordWriter.TreeBuilder.RecordReader;
XamlParseMode = tokenReader.XamlParseMode;
Parser = new TemplateXamlParser(this, tokenReader,
parserContext);
Parser.StreamManager = streamManager;
Parser.XamlParseMode = XamlParseMode;
RecordWriter = new XamlTreeBuilderBamlRecordWriter(this,
streamManager.WriterStream, parserContext, true /*isSerializer*/ );
// Give Writer to the Parser, since it can't be passed in constructor due to
// circular dependency.
Parser.BamlRecordWriter = RecordWriter;
// The BamlRecordReader needs its own parser context
ParserContext readerParserContext = previousBamlRecordReader.ParserContext;
RecordReader = new TemplateBamlRecordReader(streamManager.ReaderStream,
null, null,
readerParserContext,
bamlReaderStack, rootList);
}
#endregion Constructors
#region Overrides
///
/// Forward parsing directive onto xaml parser.
///
///
/// An array containing the root objects in the XAML stream
///
public override object ParseFragment()
{
// Tell the parser the starting depth
Parser.Parse();
// its okay for root to be null if its an empty file or the parse
// was stopped.
return GetRoot();
}
#endregion Overrides
///
/// Forward the processing of a xaml node to the parser. This is done when there is
/// an out-of-band record that needs to be added to the baml stream, such as the
/// start of a Template tag.
///
internal void ProcessXamlNode(XamlNode xamlNode)
{
bool cleanup = false;
bool done = false;
Parser.ProcessXamlNode(xamlNode, ref cleanup, ref done);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\
*
* File: TemplateXamlTreeBuilder.cs
*
* Purpose: Class that builds a template object from XAML
*
* History:
* 11/22/04: varsham Created
*
* Copyright (C) 2004 by Microsoft Corporation. All rights reserved.
*
\***************************************************************************/
using System;
using System.Xml;
using System.IO;
using System.Windows;
using System.Text;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Windows.Threading;
using MS.Utility;
namespace System.Windows.Markup
{
///
/// XamlTree builder is the TreeBuilder implementation that loads a Tree
/// from XAML.
///
internal class TemplateXamlTreeBuilder : XamlTreeBuilder
{
#region Constructors
///
/// Constructor. Set up associated baml writer and xaml parser to
/// create the triumvarate needed for parsing a template block. This is
/// the main method to call to create the needed object graph for
/// parsing.
///
public TemplateXamlTreeBuilder(
ParserContext parserContext,
XamlReaderHelper tokenReader,
ReadWriteStreamManager streamManager,
ParserStack bamlReaderStack,
ArrayList rootList)
{
Debug.Assert(null != parserContext, "ParserContext is null");
Debug.Assert(null != tokenReader, "TokenReader is null");
Debug.Assert(null != parserContext.XamlTypeMapper, "ParserContext.XamlTypeMapper is null");
Debug.Assert(null != streamManager, "StreamManager is null");
// Fetch the previous BamlRecordReader
XamlTreeBuilderBamlRecordWriter previousBamlRecordWriter =
(XamlTreeBuilderBamlRecordWriter)tokenReader.ControllingXamlParser.BamlRecordWriter;
BamlRecordReader previousBamlRecordReader = previousBamlRecordWriter.TreeBuilder.RecordReader;
XamlParseMode = tokenReader.XamlParseMode;
Parser = new TemplateXamlParser(this, tokenReader,
parserContext);
Parser.StreamManager = streamManager;
Parser.XamlParseMode = XamlParseMode;
RecordWriter = new XamlTreeBuilderBamlRecordWriter(this,
streamManager.WriterStream, parserContext, true /*isSerializer*/ );
// Give Writer to the Parser, since it can't be passed in constructor due to
// circular dependency.
Parser.BamlRecordWriter = RecordWriter;
// The BamlRecordReader needs its own parser context
ParserContext readerParserContext = previousBamlRecordReader.ParserContext;
RecordReader = new TemplateBamlRecordReader(streamManager.ReaderStream,
null, null,
readerParserContext,
bamlReaderStack, rootList);
}
#endregion Constructors
#region Overrides
///
/// Forward parsing directive onto xaml parser.
///
///
/// An array containing the root objects in the XAML stream
///
public override object ParseFragment()
{
// Tell the parser the starting depth
Parser.Parse();
// its okay for root to be null if its an empty file or the parse
// was stopped.
return GetRoot();
}
#endregion Overrides
///
/// Forward the processing of a xaml node to the parser. This is done when there is
/// an out-of-band record that needs to be added to the baml stream, such as the
/// start of a Template tag.
///
internal void ProcessXamlNode(XamlNode xamlNode)
{
bool cleanup = false;
bool done = false;
Parser.ProcessXamlNode(xamlNode, ref cleanup, ref done);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MediaContextNotificationWindow.cs
- UdpAnnouncementEndpoint.cs
- ToolStripContainer.cs
- ListViewDeleteEventArgs.cs
- MobileControlBuilder.cs
- _CookieModule.cs
- StringSorter.cs
- ScriptResourceAttribute.cs
- EmptyControlCollection.cs
- DataGridViewCellConverter.cs
- Exceptions.cs
- MemoryRecordBuffer.cs
- ZipFileInfo.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- XmlMembersMapping.cs
- StorageAssociationSetMapping.cs
- WinFormsComponentEditor.cs
- Exceptions.cs
- MasterPage.cs
- AffineTransform3D.cs
- XmlAttributeAttribute.cs
- HttpCapabilitiesEvaluator.cs
- XmlEncodedRawTextWriter.cs
- SQLInt16.cs
- AppearanceEditorPart.cs
- UnsafeCollabNativeMethods.cs
- WebUtil.cs
- GPRECTF.cs
- PseudoWebRequest.cs
- DesignerAdapterAttribute.cs
- JournalEntryStack.cs
- ClusterSafeNativeMethods.cs
- ResourceDictionaryCollection.cs
- ListViewItem.cs
- DbgCompiler.cs
- BindingListCollectionView.cs
- NullableDecimalAverageAggregationOperator.cs
- ParallelLoopState.cs
- XsdDataContractImporter.cs
- ExpressionVisitor.cs
- XmlSerializationWriter.cs
- StreamUpgradeProvider.cs
- EntityContainerEntitySetDefiningQuery.cs
- RadioButtonFlatAdapter.cs
- MarginsConverter.cs
- Panel.cs
- MenuItemBinding.cs
- RelativeSource.cs
- NativeActivityAbortContext.cs
- WhiteSpaceTrimStringConverter.cs
- SymbolTable.cs
- FileSystemInfo.cs
- FrameDimension.cs
- NewArrayExpression.cs
- ExternalException.cs
- ClientTargetCollection.cs
- StagingAreaInputItem.cs
- SoapFault.cs
- MergeLocalizationDirectives.cs
- HttpCookie.cs
- FormViewModeEventArgs.cs
- AutoScrollExpandMessageFilter.cs
- FixedTextView.cs
- ProfileGroupSettings.cs
- CodeSpit.cs
- TransmissionStrategy.cs
- MaskInputRejectedEventArgs.cs
- InlineCategoriesDocument.cs
- CodeSubDirectory.cs
- WindowsEditBoxRange.cs
- GenericAuthenticationEventArgs.cs
- ColorContextHelper.cs
- RedirectionProxy.cs
- RemotingServices.cs
- ClientCultureInfo.cs
- _ConnectOverlappedAsyncResult.cs
- StrokeIntersection.cs
- ZipPackage.cs
- MenuItemBindingCollection.cs
- TableDesigner.cs
- MeshGeometry3D.cs
- MimeMapping.cs
- DocumentPageTextView.cs
- NativeCppClassAttribute.cs
- AdornerHitTestResult.cs
- ProviderConnectionPointCollection.cs
- EnumMember.cs
- WebBrowserUriTypeConverter.cs
- XmlUtilWriter.cs
- SafeThreadHandle.cs
- ServiceSecurityAuditElement.cs
- FontInfo.cs
- FocusChangedEventArgs.cs
- Empty.cs
- M3DUtil.cs
- XmlSiteMapProvider.cs
- WebPartAuthorizationEventArgs.cs
- DesignerActionPropertyItem.cs
- SiteMapDataSourceView.cs
- SafeProcessHandle.cs