Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 理解XAML语法_C#_Wpf_Xaml - Fatal编程技术网

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}