将Combobox的SelectedPerson绑定到数据网格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Combobox的SelectedPerson绑定到数据网格相关的知识,希望对你有一定的参考价值。
我目前正在学习编码,我是wpf和数据绑定的新手。我目前正在使用caliburn micro进行mvvm管理。
问题:我列出了一个人,并对该列表做了一个可绑定的集合以填充我的组合框:
public List<Person> PersoonNamenList
get return _persoonNamenList;
set
_persoonNamenList = value;
NotifyOfPropertyChange(() => PersoonNamenList);
public BindableCollection<Person> PersoonNamen
get return _persoonNamen;
set
_persoonNamen = value;
NotifyOfPropertyChange(() => PersoonNamen);
这是我的观点:
<DataGrid
Grid.Row="1" Grid.Column="1" Background="Transparent" Margin="10,0,5,0"
IsReadOnly="True" AutoGenerateColumns="False" AlternatingRowBackground="Green"
ItemsSource="Binding test"
>
<DataGrid.Columns>
<DataGridTextColumn Header="Sport" Binding="Binding Person.FullName,Mode=OneWay"/>
<DataGridTextColumn Header="Beschrijving" Binding="Binding ProgramBeschrijving"/>
<DataGridTextColumn Header="Duurtijd" Binding="Binding ProgramDuurtijd "/>
<DataGridTextColumn Header="Gewicht" Binding="Binding ProgramGewicht"/>
<DataGridTextColumn Header="Set" Binding="Binding ProgramSet "/>
<DataGridTextColumn Header="Herhalingen" Binding="Binding ProgramHerhalingen "/>
</DataGrid.Columns>
</DataGrid>
我的组合框的我的SelectedPerson属性:
public Person SelectedPerson
get return _selectedPerson;
set
_selectedPerson = value;
NotifyOfPropertyChange(() => PersoonNamen);
所以如图所示,当我在组合框中选择一个人时,我希望某些属性显示在我的数据网格中(例如:名字,姓氏,地址)。不要介意我的datagrid的标头,因为它们是测试标头。我正在使用databasefirst EF。
答案
如果我正确理解您的情况,Grid
总是只有一行显示该人员的详细信息。
这意味着您必须向ViewModel添加类型为ObservableCollection<Person>
的新属性,该属性应绑定到Grid
ItemsSource
属性。该属性是指示哪些项目显示在Grid
上的属性。在您发布的XAML之后,该属性应命名为test
。
假设绑定到ComboBox
的ViewModel与绑定到Grid
的相同,您只需要将SelectedItem
的属性ComboBox
绑定到此处发布的属性SelectedPerson
即可ComboBox
的所选项目随时更改。每次更改此属性时,都需要将test
集合中的现有项目替换为ComboBox
中选择的项目,然后完成。
以上是关于将Combobox的SelectedPerson绑定到数据网格的主要内容,如果未能解决你的问题,请参考以下文章