0

我想用 UserControls 填充 TreeView,但我只想显示 Name 属性,而不是整个 UserControl。当我向 myUCs 添加一些内容时,以下代码会给我带来奇怪的崩溃:

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?

4

3 回答 3

0

我发现了一个不太方便的解决方法:而不是用户控件列表,而是使用字典,并将 XAML 更改为:

<controls:TreeView x:Name="MyTreeView">
    <controls:TreeView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Key.Name}"/>
        </DataTemplate>
    </controls:TreeView.ItemTemplate>
</controls:TreeView>
于 2009-12-02T15:09:56.617 回答
0

ListBox 中存在相同的错误(?),这里提供了一个解决方案: Use UIElements as ItemsSource of ListBox in Silverlight

该特定修复不适用于 TreeView

于 2009-12-03T16:10:23.070 回答
-1

您可能必须创建自己的类来扩展 UserControl 并覆盖 ToString() 方法,以便它返回 name 属性。

于 2009-11-24T17:33:22.953 回答