問題描述:左側是一個ListView控件,用於顯示User類的Name屬性,右側顯示其SelectedItem的其他屬性,包括Age, Address,和Category。其中Category用ComboBox表示。在下拉框選中其他category,可以更改User的屬性值。
如果Category是string類型,即User類的定義如下

public class User { public string Name { get; set; } public int Age { get; set; } public string category { get; set; } public string Address { get; set; } }
那么,combobox的綁定代碼如下:
<ComboBox Width="150" Canvas.Left="80" ItemsSource="{Binding Path=Categories}" SelectedItem="{Binding ElementName=listview, Path=SelectedItem.category, Mode=TwoWay}" Name="cbotypes"/>
直接綁定到了SelectedItem屬性。
如果Category是個復合類型,即User類和Category類定義如下:

public class User { public string Name { get; set; } public int Age { get; set; } public Category category { get; set; } public string Address { get; set; } } public class Category { public int ID { get; set; } public string Name { get; set; } }
那么,combobox的綁定代碼如下:
<ComboBox Width="150" Canvas.Left="80" ItemsSource="{Binding Path=Categories}" DisplayMemberPath="Name" SelectedItem="{Binding ElementName=listview, Path=SelectedItem.category, Mode=TwoWay}" SelectedValuePath="Name" SelectedValue="{Binding ElementName=listview, Path=SelectedItem.category.Name}" Name="cbotypes"/>
使用DisplayMemberPath指定了綁定到Category類中的Name屬性,並使用了SelectedValue和SelectedValuePath綁定到具體的SelctedItem.