将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绑定到数据网格的主要内容,如果未能解决你的问题,请参考以下文章

winform combobox绑定数据

ListBox 内的 DataContext ComboBox 绑定

winform绑定民族信息

WPF——ComboBox控件怎么绑定数据

DataGrid.RowStyle 仅适用于初始绑定

Angular2布尔输入参数不起作用