B.SomethingStatic()
делает оператор, который SomethingStatic
является членом B
лет. Это не верно. SomethingStatic
недвусмысленно член A
лет. То, что это доступно дисквалифицированный членам B
(как будто это был член B
лет) является вопросом удобства. То, что это доступно при квалификации с B
, IMO, ошибка.
Your code is fine, but your DataType attribute values need to be wrapped in curly braces:
<HierarchicalDataTemplate DataType="{x:Type local:Foo}">
<TextBlock Text="I am a Foo" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type System:String}">
<TextBlock Text="I am a String" />
</HierarchicalDataTemplate>
You haven't specified the ItemTemplate property of the TreeView. This property tells the TreeView which DataTemplate to use, in your case you want to specify the one defined in your resources:
<TreeView Name="treeView1"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource MyResourceItemTemplate}" />
But in your case you may actually want to use a DataTemplateSelector implementation applied to the TreeView.ItemTemplateSelector
property for choosing a different template based on the type to be displayed...
Также, если вы не используете ItemsSource в HierarchicalDataTemplate, вы также можете использовать DataTemplate вместо этого.