Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- TableLayoutPanelDesigner.cs
- BulletDecorator.cs
- StaticExtensionConverter.cs
- FrugalList.cs
- DataExpression.cs
- WebPartDescription.cs
- PeerNameRecordCollection.cs
- XmlLoader.cs
- ToolStripItemRenderEventArgs.cs
- SendActivityDesigner.cs
- AutomationAttributeInfo.cs
- Style.cs
- Button.cs
- HtmlMeta.cs
- HotSpotCollection.cs
- QueryOutputWriter.cs
- TextLineBreak.cs
- DefaultValueAttribute.cs
- ConfigurationCollectionAttribute.cs
- EventSinkActivityDesigner.cs
- IChannel.cs
- log.cs
- SearchForVirtualItemEventArgs.cs
- QueryRewriter.cs
- TabControlEvent.cs
- Transform.cs
- RuleSettingsCollection.cs
- _NetworkingPerfCounters.cs
- IfElseDesigner.xaml.cs
- BitmapMetadataBlob.cs
- DefaultValueConverter.cs
- SmiXetterAccessMap.cs
- GeneralTransform2DTo3D.cs
- PreservationFileReader.cs
- BuildProviderUtils.cs
- EntityDataSourceUtil.cs
- OdbcCommandBuilder.cs
- TableLayoutPanelCellPosition.cs
- IconHelper.cs
- PropertyReferenceSerializer.cs
- XmlReaderDelegator.cs
- StringAnimationUsingKeyFrames.cs
- X509CertificateCollection.cs
- DbConnectionPool.cs
- XamlToRtfParser.cs
- BindableTemplateBuilder.cs
- TrackingServices.cs
- PersistStreamTypeWrapper.cs
- ReturnEventArgs.cs
- ControlPaint.cs
- OpCodes.cs
- NavigationExpr.cs
- XPathNode.cs
- PublisherMembershipCondition.cs
- RequestDescription.cs
- KnownColorTable.cs
- MarshalByRefObject.cs
- UnicastIPAddressInformationCollection.cs
- DataBoundControlHelper.cs
- XmlNodeReader.cs
- BitVec.cs
- QueryCursorEventArgs.cs
- StreamingContext.cs
- HMACMD5.cs
- Camera.cs
- QilTypeChecker.cs
- DBBindings.cs
- WebPartCloseVerb.cs
- CompilerHelpers.cs
- KeyedPriorityQueue.cs
- RoutedEventArgs.cs
- TraceFilter.cs
- RoleServiceManager.cs
- PathSegmentCollection.cs
- UnconditionalPolicy.cs
- CryptographicAttribute.cs
- MouseEvent.cs
- StylusButtonEventArgs.cs
- SwitchAttribute.cs
- HandlerFactoryCache.cs
- OptimisticConcurrencyException.cs
- FormsAuthenticationCredentials.cs
- DiscoveryClientChannelBase.cs
- Size3D.cs
- _IPv6Address.cs
- PerformanceCounterNameAttribute.cs
- LayoutInformation.cs
- InvalidOleVariantTypeException.cs
- ConditionCollection.cs
- CrossAppDomainChannel.cs
- InvokeWebServiceDesigner.cs
- RenderingEventArgs.cs
- FunctionQuery.cs
- ConfigDefinitionUpdates.cs
- TextServicesCompartment.cs
- UTF8Encoding.cs
- Dynamic.cs
- BitmapEffectGroup.cs
- HelpFileFileNameEditor.cs
- SizeConverter.cs