我想用UserControls填充TreeView,但我只希望显示Name属性,而不是整个UserControl。一旦我向myUC添加了一些内容,下面的代码就会给我带来奇怪的崩溃:
C#:
var myUCs = new ObservableCollection<UserControl>();
MyTreeView.ItemsSource = myUCs;
XAML:
<controls:TreeView x:Name="MyTreeView">
<controls:TreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</controls:TreeView.ItemTemplate>
</controls:TreeView>
有谁知道如何使用UserControls列表作为TreeViews的ItemSource?
答案 0 :(得分:0)
我找到了一个不太方便的解决方法:使用Dictionary,而不是List of UserControls,并将XAML更改为:
<controls:TreeView x:Name="MyTreeView">
<controls:TreeView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Key.Name}"/>
</DataTemplate>
</controls:TreeView.ItemTemplate>
</controls:TreeView>
答案 1 :(得分:0)
ListBox中存在相同的错误(?),此处提供了一个解决方案: Use UIElements as ItemsSource of ListBox in Silverlight
该特定修复程序不适用于TreeView
答案 2 :(得分:-1)
您可能必须创建自己的类来扩展UserControl并覆盖ToString()方法,以便它返回name属性。