(WPF)对话框中的数据绑定
来源:百度文库 编辑:神马文学网 时间:2024/04/29 04:58:55
对话框中的数据绑定(WPF)
今天我将介绍如何对“对话框”进行数据绑定。需求很简单,点击ok按钮时使用数据绑定确定用户的变更,点击cancel按钮时取消更改
一种方法是当用户在对话框内更改信息时使用绑定来更新数据源,如果点击cancel按钮则撤销绑定。不过我不太喜欢这种cancel的方法,因为数据源需要的只是一个临时的值。而且对话框启动时需要记住数据;点击cancel按钮时还需要还原数据,应用程序要想实现这些功能就需要添加额外的逻辑。这可是个烦人的事。幸运的是还有个简单的方法:改变UpdateSourceTrigger属性的值
主窗体内包含一个按钮,用来启动对话框。窗体内的其他标签用来显示数据。程序启动时标签里没有内容。用户打开对话框,在文本框里输入数据后点击ok,主窗体内标签的值就会用户输入的内容。如果点击cancel按钮,标签的值不会改变
private void ShowDialog(object sender, RoutedEventArgs args)
{
Dialog1 dialog = new Dialog1();
dialog.Owner = this;
dialog.ShowDialog();
}
对话框包含两个文本框和Ok/Cancel按钮。这两个文本框的数据源和彼此的应标签的数据源相同。下面是话框的xaml代码
Binding类的UpdateSourceTrigger属性允许我们指定触发升级数据源的方式。文本框TextProperty属性对应的UpdateTrigger默认值为”LostFocus”:当TextBox失去焦点时就会对数据源进行更新。该方式不适合这个程序。我们只想在用户点击ok按钮时才更新数据源。将UpdateSourceTrigger的值改为”Explicit”,这样我们就可以在ok按钮的事件里显示地调用BindingExpression的UpdateSource()方法来更新数据源了。
private void OKHandler(object sender, RoutedEventArgs args)
{
BindingExpression bindingExpressionName = BindingOperations.GetBindingExpression(Name, TextBox.TextProperty);
bindingExpressionName.UpdateSource();
BindingExpression bindingExpressionComment = BindingOperations.GetBindingExpression(Comment, TextBox.TextProperty);
bindingExpressionComment.UpdateSource();
this.DialogResult = true;
}
Ok按钮的逻辑比较简单。但Cancel按钮更简单。我们不关心数据源的更新,仅仅关闭窗体就可以了:只要将按钮的IsCancel属性设置为true就可以了,不需要进行事件的编码
下面是该程序的截图:
原文地址:How do I implement a data bound dialog box?
译者注:Beatriz Costa写本文时的winfx版本是BETA 1,现在已经不能使用了。我改动了部分代码。放在这里供大家下载
代码下载译者注:大多数的dependency Property对应的UpdateSouceTrigger值为PropertyChanged,但TextBox的TextProperty对应的值为LostFocus
今天我将介绍如何对“对话框”进行数据绑定。需求很简单,点击ok按钮时使用数据绑定确定用户的变更,点击cancel按钮时取消更改
一种方法是当用户在对话框内更改信息时使用绑定来更新数据源,如果点击cancel按钮则撤销绑定。不过我不太喜欢这种cancel的方法,因为数据源需要的只是一个临时的值。而且对话框启动时需要记住数据;点击cancel按钮时还需要还原数据,应用程序要想实现这些功能就需要添加额外的逻辑。这可是个烦人的事。幸运的是还有个简单的方法:改变UpdateSourceTrigger属性的值
主窗体内包含一个按钮,用来启动对话框。窗体内的其他标签用来显示数据。程序启动时标签里没有内容。用户打开对话框,在文本框里输入数据后点击ok,主窗体内标签的值就会用户输入的内容。如果点击cancel按钮,标签的值不会改变
private void ShowDialog(object sender, RoutedEventArgs args)
{
Dialog1 dialog = new Dialog1();
dialog.Owner = this;
dialog.ShowDialog();
}
对话框包含两个文本框和Ok/Cancel按钮。这两个文本框的数据源和彼此的应标签的数据源相同。下面是话框的xaml代码
Binding类的UpdateSourceTrigger属性允许我们指定触发升级数据源的方式。文本框TextProperty属性对应的UpdateTrigger默认值为”LostFocus”:当TextBox失去焦点时就会对数据源进行更新。该方式不适合这个程序。我们只想在用户点击ok按钮时才更新数据源。将UpdateSourceTrigger的值改为”Explicit”,这样我们就可以在ok按钮的事件里显示地调用BindingExpression的UpdateSource()方法来更新数据源了。
private void OKHandler(object sender, RoutedEventArgs args)
{
BindingExpression bindingExpressionName = BindingOperations.GetBindingExpression(Name, TextBox.TextProperty);
bindingExpressionName.UpdateSource();
BindingExpression bindingExpressionComment = BindingOperations.GetBindingExpression(Comment, TextBox.TextProperty);
bindingExpressionComment.UpdateSource();
this.DialogResult = true;
}
Ok按钮的逻辑比较简单。但Cancel按钮更简单。我们不关心数据源的更新,仅仅关闭窗体就可以了:只要将按钮的IsCancel属性设置为true就可以了,不需要进行事件的编码
下面是该程序的截图:
原文地址:How do I implement a data bound dialog box?
译者注:Beatriz Costa写本文时的winfx版本是BETA 1,现在已经不能使用了。我改动了部分代码。放在这里供大家下载
代码下载译者注:大多数的dependency Property对应的UpdateSouceTrigger值为PropertyChanged,但TextBox的TextProperty对应的值为LostFocus
(WPF)对话框中的数据绑定
Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定)
Windows Presentation Foundation(WPF)中的数据绑定(控件与控件值的绑定)
Windows Presentation Foundation(WPF)中的数据绑定(使用XmlDataProvider作控件绑定之二:使用外部URL的XML文件)
Java 中的 XML: 数据绑定
Java 中的 XML: 数据绑定,第 2 部分:性能
Java 中的 XML: 数据绑定,第 2 部分:性能
ASP.NET 2.0中实现模板中的数据绑定
ASP.NET 2.0中实现模板中的数据绑定
数据绑定控件
WPF中的传递事件
WPF中的动画.
Java 中的 XML: 数据绑定,第 1 部分:代码生成方法 — JAXB 及其它
Java 中的 XML: 数据绑定,第 1 部分:代码生成方法 — JAXB 及其它
XML 数据绑定框架 JiBX
XML 数据绑定框架 JiBX
.net2.0数据绑定语法
闲话WPF之二五(WPF中的ControlTemplate [3])
闲话WPF之十七(WPF中的资源 [3])
闲话WPF之二二(WPF中的Style)
闲话WPF之十八(WPF中的资源 [4] )
闲话WPF之十七(WPF中的资源 [3])
闲话WPF之十六(WPF中的资源 [2])
Windows Presentation Foundation 数据绑定:第一部分