【问题标题】:Binding SelectedPerson of Combobox to a datagrid将 Combobox 的 SelectedPerson 绑定到数据网格
【发布时间】:2020-09-24 01:02:17
【问题描述】:

我目前正在学习编码,我是 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);
        }
    }

如图所示,当我在组合框中选择一个人时,我希望某些属性显示在我的数据网格中(例如:名字、姓氏、地址)。不要介意我的数据网格的标题,因为它们是测试标题。我正在使用 databasefirst EF。

【问题讨论】:

  • 不要发布代码图片,将代码直接粘贴到您的问题中。
  • 感谢您告诉我,我进行了编辑。
  • 我相信您的问题与主从数据显示密切相关。看看这个post

标签: c# wpf data-binding combobox datagrid


【解决方案1】:

如果我正确理解了您的情况,Grid 将始终只有一行显示人员的详细信息。

这意味着您必须将ObservableCollection&lt;Person&gt; 类型的新属性添加到应绑定到Grid ItemsSource 属性的ViewModel。该属性用于指示在Grid 上显示哪些项目。 在您发布的 XAML 之后,该属性应命名为 test

假设绑定到ComboBox 的ViewModel 与绑定到Grid 相同,您只需将ComboBox 的属性SelectedItem 绑定到您在此处发布的属性SelectedPerson 即可随时更改ComboBox 的选定项目。 每次更改此属性时,您都需要将 test 集合中的现有项目替换为 ComboBox 中选择的项目,然后您就完成了。

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 2012-03-10
    • 2012-12-25
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    相关资源
    最近更新 更多