小弟我最近在修改Telerik控件的源代码,我发现他们在写XAML代码的时候又一个很有意思的写法,请看下图:
<?BODY BEGIN?>
<?WPF BEGIN?>
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:controls="clr-namespace:Telerik.Windows.Controls"
xmlns:telerikData="clr-namespace:Telerik.Windows.Data"
xmlns:expressions="clr-namespace:Telerik.Windows.Controls.Expressions"
<?WPF END?>
<?SILVERLIGHT BEGIN?>
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:controls="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Expressions"
xmlns:telerikData="clr-namespace:Telerik.Windows.Data;assembly=Telerik.Windows.Data"
xmlns:expressions="clr-namespace:Telerik.Windows.Controls.Expressions;assembly=Telerik.Windows.Controls.Expressions"
<?SILVERLIGHT END?>
<?BODY END?>
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<?include(../Namespaces.xaml)?>
>
<?BODY BEGIN?>
<telerik:Expression_DarkTheme x:Key="Theme"/>
<SolidColorBrush x:Key="ControlBackground" Color="#FF333333"/>
<SolidColorBrush x:Key="ExpressionEditorTextBox_Background" Color="#FF333333"/>
<SolidColorBrush x:Key="RadExpressionEditor_InfoPanel_BorderBrush" Color="#FF333333"/>
<SolidColorBrush x:Key="ControlOuterBorder" Color="#FF595959"/>
<SolidColorBrush x:Key="RadExpressionEditor_InfoPanel_Background" Color="#FF333333"/>
<SolidColorBrush x:Key="Control_Foreground" Color="#FFDDDDDD"/>
<SolidColorBrush x:Key="RadExpressionEditor_ResultsPanel_Background" Color="#FF3D3D3D"/>
<SolidColorBrush x:Key="CalculationPanel_Background" Color="#FF575859"/>
<SolidColorBrush x:Key="CalculationPanel_Foreground" Color="#FFC5C2C2"/>
<Color x:Key="FunctionColor_Foreground">#FF5597BB</Color>
<Color x:Key="MemberColor_Foreground">#FFFFC66D</Color>
<Color x:Key="StringColor_Foreground">#FF8AC25C</Color>
<Color x:Key="DateTimeColor_Foreground">#FFCC781F</Color>
<?BODY END?>
</ResourceDictionary>
他们先把页面中的命名空间给放在一个单独的XAML文件中,然后在需要使用命名空间的页面将命名空间文件导入进去,用<?include?>指令给导入,我从没见过这种写法,并且两个xaml文件的生成操作属性都是:PreprocessedXamlInclude,我想可能是他们自己写的自定义生成操作,但是具体咋回儿事儿还是不清楚,希望懂的人能给点解释。。。。小弟不胜感激
提高下悬赏,希望能给一个满意答案!!!!
这个答案 要关注的. 只知道网站是命名空间 不知道实现机制 希望楼主的.
这样写的主要作用是解耦,如果每个页面都写一大串引用的话,尤其是自定义引用,改起来会很麻烦,每个都要改,像telerik这样写的话,只需要把这个单独xaml文件改一下就OK了。