【问题标题】:WPF XamDataGrid doesn't update until leaving current cellWPF XamDataGrid 在离开当前单元格之前不会更新
【发布时间】:2013-10-24 14:18:00
【问题描述】:

我的应用程序中有几个 XamDataGrids,我希望它们在用户更改其中的复选框后立即启用相应的保存按钮。这目前不会发生,直到我离开单元格或按 Enter 等,因为单元格仍处于编辑模式。我知道如何使用我在代码隐藏中找到的帖子来解决这个问题:

private void XamDataGrid_CellChanged(object sender, Infragistics.Windows.DataPresenter.Events.CellChangedEventArgs e)
        {
            e.Cell.Record.SetCellValue(e.Cell.Field, e.Editor.Value, true);
        }

但是我怎样才能在整个应用程序中为我的所有网格处理这个问题,而不把它放在每个网格的代码隐藏中?我正在使用 MVVM,如果可能的话,我希望不要有任何代码。如果必须,我会的,但我绝对不希望它出现在 17 个带有网格的不同文件的代码中。也许是一种行为?

【问题讨论】:

  • 这听起来像你需要在你的Bindings 上将Binding.UpdateSourceTrigger 属性添加到PropertyChanged 的值......听起来他们目前设置为LostFocus?跨度>
  • 听起来像但不是,xamdatagrid 中的单元格“仍处于编辑模式”,因此将 UpdateSourceTrigger 设置为 PropertyChanged 没有任何效果,事实上,这是我相信的默认值
  • 您可以在 MVVM 中进行代码隐藏。这不可能是业务逻辑。
  • 你可以创建一个新类并继承XamDataGrid。这样,您可以覆盖受保护的方法 OnCellChanged 并添加您发布的实现。这将消除向所有文件添加代码隐藏的必要性。
  • 这是个好主意,可能我会这样做。我仍然想听听谁能告诉我我是否可以((应该?)通过一种行为来实现这一点以及如何做到这一点。

标签: c# wpf xamdatagrid


【解决方案1】:

您需要将DataItemUpdateTrigger 设置为OnCellValueChange

XamDataGrid 中所有字段的默认值

<igDP:XamDataGrid.FieldSettings>
    <igDP:FieldSettings 
        DataItemUpdateTrigger="OnCellValueChange" />
</igDP:XamDataGrid.FieldSettings>
  • 我相信这可以很容易地用作所有 XamDataGrid 的样式。

对于单个字段

<igDP:Field Label="" Name="IsSelected" >
    <igDP:Field.Settings>
        <igDP:FieldSettings DataItemUpdateTrigger="OnCellValueChange" />
    </igDP:Field.Settings>
</igDP:Field>

【讨论】:

    【解决方案2】:

    DataItemUpdateTrigger 属性在 NetAdvantage 2013 v. 2 或更高版本的 FieldSettings 类中可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多