0

そのため、以下のタイプにバインドされた Silverlight ツリービュー コントロールがあり、ページの を、オブジェクトのリストでDataContextあるプロパティを持つ ViewModel のインスタンスに設定します。DivisionsRmDivision

public class RmDivision
    {
        public RmDivision()
        {
            SubDivisions = new ObservableCollection<RmDivision>();
        }
        public string Type { get; set; }
        public string Name { get; set; }
        public IList<RmDivision> SubDivisions { get; set; }
    }

そして、次のようにバインドされます。

 <sdk:TreeView HorizontalAlignment="Stretch" Name="treeBranches" 
                          ItemsSource="{ Binding Divisions }"  VerticalAlignment="Stretch" SelectedValuePath="Division" Grid.Row="0" SelectedItemChanged="treeBranches_SelectedItemChanged">
                <sdk:TreeView.ItemTemplate>
                    <sdk:HierarchicalDataTemplate  ItemsSource="{Binding SubDivisions}">
                        <TextBlock Text="{Binding Name}" ToolTipService.ToolTip="{Binding Type}" />
                    </sdk:HierarchicalDataTemplate>
                </sdk:TreeView.ItemTemplate>
            </sdk:TreeView>

これで、treeeview アイテムをクリックするたびに、次の出力ウィンドウにのみ例外が発生しなくなりました。

System.Windows.Data エラー: BindingExpression パス エラー: 'xxx.Base.RmDivision' 'xxx.Base.RmDivision' で 'Division' プロパティが見つかりません (HashCode=35753827)。BindingExpression: Path='Division' DataItem='xxx.Base.RmDivision' (HashCode=35753827); ターゲット要素は 'System.Windows.Controls.ContentControl' (Name='') です。ターゲット プロパティは 'Content' (タイプ 'System.Object') です。

私はここでちょっと初心者で、何が起こっているのか本当にわかりません。それがツリービューであることを知る唯一の方法は、それがDivisionプロパティで何かをしなければならない唯一のコントロールだからSelectedValuePathです。 RmDivision のインスタンスになり、現在は次のように機能します。

よろしく

4

1 に答える 1

2

除算はRmDivisionの所有物ではありません。したがって、treeviewitemを選択するたびに、プロパティを検索しようとしますが、それを見つけることができません。

于 2011-02-11T12:20:06.710 に答える