我DataTemplate
在xaml文件中定义了我想通过C#代码访问的文件.任何人都可以告诉我如何访问它?我添加了一个新ResourceDictionary
文件,它的名字是Dictionary1.xaml.我有一个数据模板,如:
不是我有一个ListBox
名为listBox1,我想将它分配给它的Itemtemplate
属性,但我不知道怎么办呢?
因为Application.Current
在我的情况下是空的,我最终使用了这个:
var myResourceDictionary = new ResourceDictionary(); myResourceDictionary.Source = new Uri("/DllName;component/Resources/MyResourceDictionary.xaml", UriKind.RelativeOrAbsolute);
然后通过使用获取我需要的指定密钥
myResourceDictionary["KeyName"] as TypeOfItem
(来源)
你究竟在哪里定义它?
如果您在对象的ResourceDictionary中定义它,那么
Application.Current.Resources[typeof(yourDataTemplateTargetType)]
应该管用.如果您将其定义为其他内容的成员(例如,一个ItemsControl),则需要获取ItemsControl实例的句柄并调用ItemTemplate属性.
编辑:好的,我想我们到了某个地方.所以你要在自己的文件中定义一个ResourceDictionary.在您可以在UI中使用它并从后面的代码访问它之前,您需要将该ResourceDictionary合并到您的应用程序中.你在做这个吗?
如果是,那么下一步就是获取此资源.每个FrameworkElement都有一个名为FindResource的方法.这种方法很棒,因为它遍历ResourceDictionary树并尝试使用密钥定位资源.因此,如果要从UserControl访问此资源,可以在后面的代码中执行以下操作:
FindResource(typeof(yourDataTemplateTargetType));
如果这对您不起作用,请告诉我们您如何声明此资源字典以及它如何合并到您的应用程序资源中.
例如,如果您在App.xaml文件的资源字典中有Button模板,则可以使用以下代码访问它:
Application.Current.Resources[typeof(Button)]