如何在WPF中编辑DataGrid中的值?

时间:2011-08-15 15:19:25

标签: c# wpf

我的数据网格在itemsSource中有一个组列表:

public class Group : INotifyPropertyChanged

{
    public Group() { }
    public Group(int groupID, string groupName)
    {
        this.GroupID = groupID;
        this.GroupName = groupName;
    }

    private int _groupID;
    public int GroupID
    {
        get { return _groupID; }
        set
        {
            _groupID = value;
            OnPropertyChanged("GroupID");
        }
    }

    private string _groupName;
    public string GroupName
    {
        get { return _groupName; }
        set
        {
            _groupName = value;
            OnPropertyChanged("GroupName");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}

但是我意识到当我编辑单元格时,我需要按Enter键从Group类中触发OnPropertyChanged。因此,如果我只编辑单元格值,则不会触发事件,除非我按下Enter键。

当我在没有按Enter键的情况下编辑单元格值时,是否可以触发事件?

3 个答案:

答案 0 :(得分:4)

您需要将默认的双向绑定更改为UpdateSourceTrigger =“PropertyChanged”。

来自MSDN的示例:

<TextBox Name="itemNameTextBox"
         Text="{Binding Path=ItemName, UpdateSourceTrigger=PropertyChanged}" />

示例:http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx

UpdateSourceTrigger绑定属性页:http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger.aspx

答案 1 :(得分:0)

您需要在xaml中使用UpdateSourcetrigger

有三种不同的类型:

  1. PropertyChanged - 每当目标属性值更新源   变化。
  2. LostFocus - 当目标属性更改且目标对象失去焦点时,将更新源。
  3. 显式 - 使用“BindingExpression.UpdateSource”进行显式调用时更新源。

答案 2 :(得分:0)

  

默认情况下,当焦点在行上丢失,按下“Enter”键,标记到下一行或以编程方式调用行上的提交时,WPF DataGrid将提交一行。

您获得的更多信息here