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的一個實例,並且它的當前工作就像這樣。
問候
+1 thx..hmm但我怎麼回事,會綁定吧,'Divisions'屬性是頁面視圖模型的一部分?應用程序加載數據並且表現得非常好,但我確實希望錯誤消失。 – gideon
只需刪除SelectedValuePath。如果此屬性爲空,它將採用列表的項目值。 –
哈哈謝謝!像魅力一樣工作。所以你在默認情況下說,'SelectedValuePath'只是對象就被分配?對? – gideon