C# 使用xaml中的键创建实例
给定的C# 使用xaml中的键创建实例,c#,wpf,xaml,C#,Wpf,Xaml,给定的资源字典: <GroupBox x:Key="Group" x:Shared="False"> <ItemsControl ItemsSource="{Binding Items}"> ... </ItemsControl> </GroupBox> <ItemsControl x:Key="Test" x:Shared="False" I
资源字典
:
<GroupBox x:Key="Group"
x:Shared="False">
<ItemsControl ItemsSource="{Binding Items}">
...
</ItemsControl>
</GroupBox>
<ItemsControl x:Key="Test"
x:Shared="False"
ItemsSource="{Binding Items}">
...
</ItemsControl>
...
...
两个
ItemsControl
内容相同。是否可以避免重复相同的xaml(…
相当大)?是否可以从组中创建测试
实例
您可以使用内容控件
:
<ItemsControl x:Key="Test"
x:Shared="False"
ItemsSource="{Binding Items}">
</ItemsControl>
<GroupBox x:Key="Group" x:Shared="False">
<ContentControl Content="{StaticResource Test}" />
</GroupBox>
请注意,ItemsControl
资源必须在GroupBox
资源之前定义
正如@grek40所指出的,您还可以将
GroupBox
的Content
属性直接设置到ItemsSource
资源,前提是GroupBox
不包含任何其他控件。您可以使用ContentControl
:
<ItemsControl x:Key="Test"
x:Shared="False"
ItemsSource="{Binding Items}">
</ItemsControl>
<GroupBox x:Key="Group" x:Shared="False">
<ContentControl Content="{StaticResource Test}" />
</GroupBox>
请注意,ItemsControl
资源必须在GroupBox
资源之前定义
正如@grek40所指出的,您还可以将
GroupBox
的Content
属性直接设置到ItemsSource
资源,前提是GroupBox
不包含任何其他控件。实际上,您可以直接设置内容
<GroupBox x:Key="Group" x:Shared="False" Content="{StaticResource Test}">
实际上,您可以直接设置内容
<GroupBox x:Key="Group" x:Shared="False" Content="{StaticResource Test}">
让它成为一个用户控件。@Clemens,聪明,甚至没有这样想。那么我不需要
键
只要
。但是我必须从外部传递所有内容(例如,在本例中,itemsource
binding)。。。不确定长xaml是否更糟糕。还有其他方法吗?您可以从ItemsControl派生自定义控件,并在Generic.xaml中以默认样式设置其属性。看。把它变成一个用户控件。@Clemens,聪明的,甚至没有这样想。那么我不需要键
只要
。但是我必须从外部传递所有内容(例如,在本例中,itemsource
binding)。。。不确定长xaml是否更糟糕。还有其他方法吗?您可以从ItemsControl派生自定义控件,并在Generic.xaml中以默认样式设置其属性。参见.I ofx:Shared
。不确定DataTemplate
是否更好,是否有相关链接?找不到“x:Shared vs DataTemplate”或类似内容。@Sinatr x:Shared的一个问题是,嵌套的ResourceDictionary
中不允许使用它,但我手头没有一个好的比较源,如果x:Shared适合您,我不需要干预。只是想用DataTemplate方法在可用选项中添加一个替代设计选项。I ofx:Shared
。不确定DataTemplate
是否更好,是否有相关链接?找不到“x:Shared vs DataTemplate”或类似内容。@Sinatr x:Shared的一个问题是,嵌套的ResourceDictionary
中不允许使用它,但我手头没有一个好的比较源,如果x:Shared适合您,我不需要干预。只是想用DataTemplate方法在可用选项中添加一个替代设计选项。