Silverlight 3:使用 UserControls 列表作为 TreeView 的 ItemsSource
我想用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我发现了一个不太方便的解决方法:使用字典代替 UserControls 列表,并将 XAML 更改为:
I found one not so convenient workaround: instead of a List of UserControls, use a Dictionary, and change the XAML to:
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
您可能必须创建自己的类来扩展 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.