0

TreeViewにUserControlsを設定したいのですが、UserControl全体ではなく、Nameプロパティのみを表示したいのです。次のコードは、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として使用する方法を知っている人はいますか?

4

3 に答える 3

0

あまり便利ではない回避策を見つけました: UserControls のリストの代わりに、Dictionary を使用し、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 に答える