Silverlight 3:使用 UserControls 列表作为 TreeView 的 ItemsSource

发布于 2024-08-11 22:58:57 字数 606 浏览 3 评论 0原文

我想用 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 吗?

I want to populate a TreeView with UserControls, but I only want the Name property to show up, not the entire UserControl. The following code gives me weird crashes as soon as I add something to 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> 

Does anyone know how to use a list of UserControls as an ItemSource for TreeViews?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时光无声 2024-08-18 22:58:57

我发现了一个不太方便的解决方法:使用字典代替 UserControls 列表,并将 XAML 更改为:

<controls:TreeView x:Name="MyTreeView">
    <controls:TreeView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Key.Name}"/>
        </DataTemplate>
    </controls:TreeView.ItemTemplate>
</controls:TreeView>

I found one not so convenient workaround: instead of a List of UserControls, use a Dictionary, and change the XAML to:

<controls:TreeView x:Name="MyTreeView">
    <controls:TreeView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Key.Name}"/>
        </DataTemplate>
    </controls:TreeView.ItemTemplate>
</controls:TreeView>
花桑 2024-08-18 22:58:57

ListBox中也存在同样的bug(?),这里提供了解决方案:
在 Silverlight 中使用 UIElements 作为 ListBox 的 ItemsSource

该特定修复确实不适用于 TreeView

The same bug(?) exists in ListBox, a solution is provided here:
Use UIElements as ItemsSource of ListBox in Silverlight

That particular fix does not work for TreeView

待"谢繁草 2024-08-18 22:58:57

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

You may have to create your own class that extends UserControl and override the ToString() method so that it returns the name property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文