繁体   English   中英

C# WPF Select ComboBox Item By DataGrid

[英]C# WPF Select ComboBox Item By DataGrid SelectedItem

在此处输入图像描述大家好,我已经四处搜索,但并没有真正找到明确的答案。 如何 Select ComboBox Item By DataGrid SelectedItem 在选择 DataGrid Rwo 时使用 DataBinding,ComboBox 必须更改以匹配 DataGrid 单元格值。 我的数据网格

<DataGrid x:Name="DatagridGroup" 
  ItemsSource="{Binding GroupList}" 
  SelectedItem="{Binding SelectedGroup ,Mode=TwoWay}"/>

我的 ComboBox

<ComboBox x:Name="ComGroupType"
      ItemsSource="{Binding GroupTypeList}"
      DisplayMemberPath="GroupTypeName"
      SelectedItem="{Binding SelectedGroupType,Mode=TwoWay, 
      UpdateSourceTrigger=PropertyChanged}"/>

我的视图模型

private Group selectedGroup = new Group();
    public Group SelectedGroup
    {
        get => selectedGroup;
        set
        {
            selectedGroup = value;
            OnPropertyChanged(nameof(SelectedGroup));
            selectedGroupType = value.GType;
            OnPropertyChanged(nameof(selectedGroupType));
        }
    }
    private GroupType selectedGroupType = new DebitCredit();
    public GroupType SelectedGroupType
    {
        get => selectedGroupType;
        set
        {
            selectedGroupType = value;
            OnPropertyChanged(nameof(selectedGroupType));
        }
    }

我的 Model

 public class Group
    {
        private GroupType gType = new GroupType();
        private int groupID;
        private int groupNumber;
        private string groupName;
        private int groupTypeID;
        private string groupTypeName;

        public GroupType GType
        {
            get => gType;
            set
            { gType = value; }
        }
        public int GroupID
        {
            get => groupID;
            set
            { groupID = value; }
        }
        public int GroupNumber
        {
            get => groupNumber;
            set
            { groupNumber = value; }
        }
        public string GroupName
        {
            get => groupName;
            set
            { groupName = value; }
        }
        public int GroupTypeID
        {
            get => groupTypeID;
            set
            {
                groupTypeID = value;
                gType.GroupTypeID = value;
            }
        }
        public string GroupTypeName
        {
            get => groupTypeName;
            set
            {
                groupTypeName = value;
                gType.GroupTypeName = value;
            }
        }
    }

我是 MVVM 的新手,我之前没有找到任何解释这个想法的问题

SelectedGroup的设置器中设置SelectedGroupType属性

public Group SelectedGroup
{
    get => selectedGroup;
    set
    {
        selectedGroup = value;
        OnPropertyChanged(nameof(SelectedGroup));
        SelectedGroupType = value.GType;
    }
}

您还需要为属性引发PropertyChanged事件:

public GroupType SelectedGroupType
{
    get => selectedGroupType;
    set
    {
        selectedGroupType = value;
        OnPropertyChanged(nameof(SelectedGroupType));
    }
}

或者,您可以直接绑定到DataGridSelectedItem

<ComboBox x:Name="ComGroupType"
    ItemsSource="{Binding GroupTypeList}"
    DisplayMemberPath="GroupTypeName"
    SelectedItem="{Binding SelectedItem.GType, ElementName=DatagridGroup}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM