我在单独的文件中有一个ListBox
和多个DataTemplate
。
<ListBox ItemTemplate="{StaticResource ItemTemplate1}"/>
在
Styles.xaml
文件中:<DataTemplate x:Key="ItemTemplate1">...</DataTemplate>
<DataTemplate x:Key="ItemTemplate2">...</DataTemplate>
我想根据其列表中对象的类型更改
ItemTemplate
的ListBox
。有没有办法在后面的代码中访问单独的
DataTemplate
,以便可以绑定到Page
的属性? 最佳答案
不使用TemplateSelector
的方法是指定DataType属性,而不指定x:Key。
<DataTemplate DataType="{x:Type Type1}">...</DataTemplate>
<DataTemplate DataType="{x:Type Type2}">...</DataTemplate>
在这种情况下,将在绑定了指定类型的属性的所有位置自动应用适当的DataTemplate。
但是我更喜欢使用
TemplateSelector
。要在代码后面访问单独的DataTemplate,您首先应该获取资源字典:
var dict = new ResourceDictionary
{Source = new Uri("/ProjectNamespace;component/Styles.xaml", UriKind.Relative)};
然后,您可以获取模板:
var dataTemplate = (DataTemplate) dict["ItemTemplate1"];
关于c# - 动态绑定(bind)到DataTemplate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12880896/