C# 理解XAML语法
我有一个主题属性,可以这样加载:C# 理解XAML语法,c#,wpf,xaml,C#,Wpf,Xaml,我有一个主题属性,可以这样加载: <xcad:DockingManager> <xcad:DockingManager.Theme> <xcad:AeroTheme> </xcad:AeroTheme> </xcad:DockingManager.Theme> <Grid Backgroud="Red"/>
<xcad:DockingManager>
<xcad:DockingManager.Theme>
<xcad:AeroTheme>
</xcad:AeroTheme>
</xcad:DockingManager.Theme>
<Grid Backgroud="Red"/>
AeroTheme是一门课程。如何通过属性实现相同的结果
<xcad:DockingManager Theme="What should I write here?">
您需要该主题的实例,可以将其作为静态资源提供。例如,如果父控件是网格:
<Grid.Resources>
<xcad:AeroTheme x:Key="myTheme"/>
</Grid.Resources>
<xcad:DockingManager Theme="{StaticResource myTheme}">
通常,如果不在xaml中明确声明此对象,就不可能通过xaml中的属性设置复杂类型的属性(例如类)。解析XAML时,实际的对象树正在构建中。Xaml使您能够以比普通XML更广泛的方式使用属性。特别是,您可以这样写:
<xcad:DockingManager>
<xcad:DockingManager.Theme>
<xcad:AeroTheme>
</xcad:AeroTheme>
</xcad:DockingManager.Theme>
<Grid Backgroud="Red"/>
这样,如果您在XAML中有:
<xcad:DockingManager Theme="Aero">
WPF发挥了神奇的作用,并使用AeroThemeConverter
中编写的转换来设置主题属性。
这当然不是一个完整的例子,但它表明了这个想法。要了解更多信息,请参阅MSDN文档:
因此,通过属性设置属性(而不在XAML中声明)的唯一方法是使用所描述的机制
另一种方法是声明一个对象并使用
MarkupExtension
(StaticResource
,DynamicResource
,各种类型的Binding
等),如上图所示。对我来说似乎很简单,你在使用
,x:Key=
和的组合时遇到过任何问题吗{StaticResource key}
?