0

所以我有一個綁定到下面的類型的Silverlight TreeView控件,我把我的網頁DataContext我的視圖模型的實例,其中有一個Divisions屬性,該屬性是RmDivision對象的名單。Silverlight 4的樹狀默默地拋出綁定錯誤

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的屬性。所以每次你選擇一個treeviewitem時,它都會嘗試查找屬性,並找不到它。

+0

+1 thx..hmm但我怎麼回事,會綁定吧,'Divisions'屬性是頁面視圖模型的一部分?應用程序加載數據並且表現得非常好,但我確實希望錯誤消失。 – gideon

+1

只需刪除SelectedValuePath。如果此屬性爲空,它將採用列表的項目值。 –

+0

哈哈謝謝!像魅力一樣工作。所以你在默認情況下說,'SelectedValuePath'只是對象就被分配?對? – gideon

相關問題