如何通过代码找到DataTemplate?

时间:2015-09-24 18:22:59

标签: wpf resources datatemplate hierarchicaldatatemplate

知道资源树中某处定义style(即可以在应用程序级别,HierarchicalDataTemplate,窗口资源或层次结构中的某个位置定义HierarchicalDataTemplate这个窗口上的控件),以编程方式,如何确定哪个<Window ... > <Window.Resources> <HierarchicalDataTemplate DataType="{x:Type Foo}" ItemsSource="{Binding Children}"> <TextBlock Text={Binding Name}" /> </HierarchicalDataTemplate> </Window.Resources> <TreeView x:Name="MainTreeView" /> </Window> 将应用于特定数据类型相对于特定控件?

例如,在下面的例子中,假设我们有一个类型为Foo的对象,我们怎么能得到它的var hdt = (HierarchicalDataTemplate)MainTreeView.FindResource(typeof(Foo)); - 恰好在这里的窗口级定义 - 相对于MainTreeView ?

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer

df= pd.DataFrame({'phrase': pd.Series('The large distance between cities. The small distance. The')})
f = CountVectorizer().build_tokenizer()(str(df['phrase']))

result = collections.Counter(f).most_common(1)

print result

我已尝试过以下操作,但它返回null:

beforeAll

1 个答案:

答案 0 :(得分:1)

找到它。 DataTemplate个对象不会像Style个对象那样使用DataType作为默认密钥。相反,他们使用DataTemplateKey对象,你得到如下......

var dataTemplateKey = new DataTemplateKey(dataItem.GetType());
var hdt = (HierarchicalDataTemplate)MainTreeView.TryFindResource(dataTemplateKey);

那很有效! :)