WPF中ComboBox控制元件的SelectedItem和SelectedValue的MVVM繫結
阿新 • • 發佈:2020-06-27
問題描述:左側是一個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 stringUser Classcategory { 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 classCategory&User classCategory { 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.
全部原始碼: