WPF对象=>用于添加/编辑/目的的Window DataBinding

时间:2014-11-25 17:20:16

标签: c# wpf data-binding

我正在开发一个项目,我想为某些对象类型创建窗口以添加/编辑目的。我无法按照我想要的方式安静地完成这项任务。我创建了UI并使用双向绑定和UpdateSourceTrigger = PropertyChanged来处理名称,必需和它的工作。我无法做的是在单击“保存”按钮时绑定OneWay并触发源更新。

我知道可以通过调用每个绑定的UpdateSource来完成。但我想应该有一个更容易的方法来做这个,像this.DataContext.UpdateSource()等整个窗口。在创建窗口对象之后和调用show函数之前,我将窗口的DataContext设置为InputDefinition对象。

我不是在寻找完整的解决方案代码。虽然我找不到一个好的解决方案,但我觉得这应该是一个非常常见的用例。只需指出方向,我将从那里开始。

前:

public class InputDefinition
{
  string name;
  bool required;
  ObservableCollection<Column> columns;
}
public class Column{
  string name;
  string dataType;
}

窗口:名称的文本框,必填的复选框,列的列表视图(带有文本框名称和组合框数据类型)和用于保存更改的按钮。

Name:     ################
Required: #         |SAVE|
Id  Name        DataType
#   ####        ########
#   ####        ########
#   ####        ########
#   ####        ########

我当前的解决方案

以下代码适用于我正在尝试的内容。但应该有一个更简单的方法。如果我的类/窗口(类的视图)有10个带绑定的用户控件怎么办?对此有何推荐?

private void SaveInputDefinition_Click(object sender, RoutedEventArgs e)
{
    NameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
    FileMatchTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
    RequiredCheckBox.GetBindingExpression(CheckBox.IsCheckedProperty).UpdateSource();
    Columns.GetBindingExpression(ListView.ItemsSourceProperty).UpdateSource();
}

0 个答案:

没有答案