0

Silverlightツリービューコントロールを下のタイプにバインドしました。私のページのDataContextを、RmDivisionのListであるDivisionsプロパティを持つViewModelのインスタンスに設定しました。silverlight 4 treeviewはバインディングエラーをスローします

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 Error: BindingExpression path error: 'Division' property not found on 'xxx.Base.RmDivision' 'xxx.Base.RmDivision' (HashCode=35753827). BindingExpression: Path='Division' DataItem='xxx.Base.RmDivision' (HashCode=35753827); target element is 'System.Windows.Controls.ContentControl' (Name=''); target property is 'Content' (type 'System.Object')..

私はちょっとここの初心者で、実際に何が起こっているのか分かりません。私が知っている唯一の方法は、ツリービューです。 Divisionプロパティで何かをしなければならない唯一のコントロールは、SelectedValuePathなので、SelectedItemをRmDivisionのインスタンスにして、このように動作させたいと思っています。

よろしくお願いします。

答えて

2

は、RmDivisionの財産ではありません。したがって、ツリービューアイテムを選択するたびに、プロパティを検索しようとしますが、それを見つけることはできません。

+0

+1 thx..hmmしかし、それ以外の方法でバインドすると、 'Divisions'プロパティはPages ViewModelの一部ですか?アプリはデータをロードし、実際には完全に正常に動作しますが、エラーは消えてしまいます。 – gideon

+1

SelectedValuePathを削除するだけです。このプロパティが空の場合、リストのitemvalueが使用されます。ありがとう! –

+0

!魅力的に働いた。つまり、デフォルトでは、 'SelectedValuePath'は割り当てられているオブジェクトだけです。右? – gideon

関連する問題