精华内容
下载资源
问答
  • 今天我将介绍如何对“对话框”进行数据绑定。需求很简单,点击ok按钮时使用数据绑定确定用户的变更,点击cancel按钮时取消更改 一种方法是当用户在对话框内更改信息时使用绑定来更新数据源,如果点击cancel按钮则...


        今天我将介绍如何对“对话框”进行数据绑定。需求很简单,点击ok按钮时使用数据绑定确定用户的变更,点击cancel按钮时取消更改

     

    一种方法是当用户在对话框内更改信息时使用绑定来更新数据源,如果点击cancel按钮则撤销绑定。不过我不太喜欢这种cancel的方法,因为数据源需要的只是一个临时的值。而且对话框启动时需要记住数据;点击cancel按钮时还需要还原数据,应用程序要想实现这些功能就需要添加额外的逻辑。这可是个烦人的事。幸运的是还有个简单的方法:改变UpdateSourceTrigger属性的值

    主窗体内包含一个按钮,用来启动对话框。窗体内的其他标签用来显示数据。程序启动时标签里没有内容。用户打开对话框,在文本框里输入数据后点击ok,主窗体内标签的值就会用户输入的内容。如果点击cancel按钮,标签的值不会改变


        <Button Click="ShowDialog" Width="100" Height="30">Show Dialog</Button>
        <Label Grid.Row="0" Grid.Column="1" Name="Name" Margin="5" Content="{Binding Source={StaticResource source}, Path=Name}"/>
        <Label Grid.Row="1" Grid.Column="1" Name="Comment" Margin="5" Content="{Binding Source={StaticResource source}, Path=Comment}"/>

        private void ShowDialog(object sender, RoutedEventArgs args)
        {
            Dialog1 dialog = new Dialog1();
            dialog.Owner = this;
            dialog.ShowDialog();
        }

    对话框包含两个文本框和Ok/Cancel按钮。这两个文本框的数据源和彼此的应标签的数据源相同。下面是话框的xaml代码

        <TextBox Grid.Row="0" Grid.Column="1" Name="Name" Margin="5" Text="{Binding Source={StaticResource source}, Path=Name, UpdateSourceTrigger=Explicit}"/>
        <TextBox Grid.Row="1" Grid.Column="1" Name="Comment" Margin="5" Text="{Binding Source={StaticResource source}, Path=Comment, UpdateSourceTrigger=Explicit}"/>
        <Button Click="OKHandler" IsDefault="true" Margin="5">OK</Button>
        <Button IsCancel="true" Margin="5">Cancel</Button>

    BindingUpdateSourceTrigger属性允许我们指定触发升级数据源的方式文本框TextProperty属性对应的UpdateTrigger默认值为LostFocus:当TextBox失去焦点时就会对数据源进行更新。该方式不适合这个程序。我们只想在用户点击ok按钮时才更新数据源。将UpdateSourceTrigger的值改为Explicit,这样我们就可以在ok按钮的事件里显示地调用BindingExpressionUpdateSource()方法来更新数据源了。

        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就可以了,不需要进行事件的编码

    下面是该程序的截图:
    12DataBoundDialogBox.png

    原文地址:How do I implement a data bound dialog box?


    译者注:Beatriz Costa写本文时的winfx版本是BETA 1,现在已经不能使用了。我改动了部分代码。放在这里供大家下载

    代码下载

    译者注:大多数的dependency Property对应的UpdateSouceTrigger值为PropertyChanged,但TextBox的TextProperty对应的值为LostFocus

    转载于:https://www.cnblogs.com/stswordman/archive/2006/12/28/605474.html

    展开全文
  • 92.如何取消单文档程序标题栏的右键菜单 93.如何隐藏或显示应用程序的标题栏 94.如何获取IE浏览器窗口的标题栏文字 95.如何修改IE浏览器的标题栏内容 96.如何禁止标题栏响应鼠标双击事件 97.如何在标题栏右键菜单中...
  • 如何取消单文档程序标题栏的右键菜单  93.如何隐藏或显示应用程序的标题栏  94.如何获取IE浏览器窗口的标题栏文字  95.如何修改IE浏览器的标题栏内容  96.如何禁止标题栏响应鼠标双击事件  97....
  • 安装完系统后,一定要安装反病毒软件,同时将其更新到最新版本。 第三招:关闭系统还原 系统还原是Windows ME和Windows XP、Windows 2003中具有的功能,它允许我们将系统恢复到某一时间状态,从而可以避免我们重新...
  • VC++ 专家指导.doc

    2012-07-14 09:06:49
    (27) 如何创建和使用无模式对话框 24 (28) 如何防止主框窗口在其说明中显示活动的文档名 26 (29) 如何在代码中获取工具条和状态条的指针 27 (30) 怎样加载其他的应用程序? 27 (31) 如何在代码中获取工具条...
  • 如何使用 将光标放在表格内,然后启动脚本。 它能做什么 InDesign允许您一次将表格的宽度设置为一列。 更改单个列时,无法选择保持表格的整体宽度相同。 该脚本将打开一个对话框,以一次性控制所有列宽。 用户界面 ...
  • 126.如何在DataGrid控件中实现数据项的编辑、更新取消 127.如何在DataGrid控件中删除最后一页的最后一记录 128.如何把数据库中的数据以Excel文件的格式在显示浏览器中 129.如何给DataGrid控件添加个标题并实现...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    93 <br>0144 如何自定义货币中的小数点 94 <br>0145 如何自定义货币中小数点左边数字分组字符 94 <br>0146 如何自定义货币中小数点左边每一组的位数 95 <br>0147 如何自定义百分比中小数...
  • 基于ASP.NET在线考试系统设计

    热门讨论 2011-03-14 16:07:15
    如何通过一种开发语言能高效的设计出这个系统是一个考虑的一个需求。由于现代计算机网络技术的快速发展,信息已遍布全球。再加上现代考试的普及。网络已成为大众化的产物,所以将考试系统与网络相联,是很有意义的...
  •  1、如何实现关机时清空页面文件  打开“控制面板”,单击“管理工具→本地安全策略→本地策略→安全 选项”,双击其中“关机:清理虚拟内存页面文件”一项,单击弹出菜单中 的“已启用”选项,单击“确定”...
  • 如何在DataGrid控件中实现数据项的编辑、更新取消 127.如何在DataGrid控件中删除最后一页的最后一记录 128.如何把数据库中的数据以Excel文件的格式在显示浏览器中 129.如何给DataGrid控件添加个标题并...
  • PT80-NEAT开发指南v1.1

    2014-06-24 18:38:34
    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................
  • GNOME GTK+ 编程宝典.pdf

    千次下载 热门讨论 2012-11-19 15:28:08
    本书以大量实例,伴以通俗易懂的解释一步步教你如何构建对话框、事件、工具条及其他界面元素,以及各种小部件、窗口和多文档界面(MDI),使你的应用程序活跃在Linux桌面上。  本书适合于计算机编程人员、大专院校...
  • MAPGIS地质制图工具

    2013-05-06 16:15:30
    软件更新日志 1、修正不能删除角度花纹有残留的Bug; 0327d(beta3)0530 1、主要是优化代码,加快启动速度 0327d(beta2)(0529) 1、修正多处错误。 2、优化程序。 3、增加单文件图层管理器。 0327d测试版(0523) 1、增加...
  • 用户什么也没选,并取消对话框;  如果你希望在用户选择完文件后自动开始上传操作,那么可以将 this.startUpload() 操作放在这里。  - 传入参数  number of files selected:将返回用户所选取的文件个数。  + ...
  • DiskGenius软件版本更新记录: [V4.4.0] 1、新增扇区编辑功能。 2、提高按文件备份分区的速度。 3、新增合并空闲区域的功能,可以方便地将空闲区域合并到指定的分区。 4、新增虚拟磁盘文件格式相互转换功能。 5、...
  • 将标签记入日志 8-16 9 章 创建HMI标签 9-1 HMI标签类型 9-1 HMI标签的数据源 9-1 设备 9-1 内存 9-2 保持型内存标签 9-2 组织HMI标签 9-2 命名HMI标签 9-2 使用文件夹来组织HMI标签 9-3 标签编辑器 9-3 使用...
  • Eclipse权威开发指南2.pdf

    热门讨论 2012-05-01 23:41:29
    2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述..... 18 2.1.5 首选项介绍..... 19 2.2 基本的Eclipse使用...
  • C#全能速查宝典

    热门讨论 2014-04-26 16:16:27
    1.1.9 迭代器——相同类型的的有序序列的一段代码 10 1.1.10 泛型——处理算法和数据结构 11 1.1.11 分部类——将一个类分成几部分 12 1.1.12 is操作符——检查变量是否为指定的类型 14 1.1.13 lock关键字——锁定...
  • 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述..... 18 2.1.5 首选项介绍..... 19 2.2 基本的...
  • 2.1.1 提示没有任何JRE可用的对话框..... 14 2.1.2 创建您的第一个项目..... 15 2.1.3 Eclipse的外观:编辑器、视图和透视图..... 16 2.1.4 用户界面概述..... 18 2.1.5 首选项介绍..... 19 2.2 基本的...
  • 它使物理网络拓朴和协议透明化,这样网络上的用户可以访问任何资源,而不需要知道资源在什么地方,或物理上它是如何连接到网络上的。% t! G+ S" E# e9 q 2 \% m) N4 I- I* v4 f. t(2)集中式管理: * [. Y& e' Q6 @,...
  • Android 上百实例源码分析以及开源分析 集合打包4

    千次下载 热门讨论 2012-07-10 21:54:03
    6.进入切换飞行模式10秒钟提示(延迟飞行,立即飞行,取消飞行) 7.可以进行延迟飞行操作 8.检测通话状态,防止正在通话时切换飞行模式 9.设置延迟飞行的提醒间隔 10.设置音量键在飞行切换中的作用 本项目共25个目标...
  • 实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类与类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ...
  • 实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类与类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ...
  • 实例071 如何将字节单位B转换成GB、MB 和KB 108 实例072 身份证号从15位升到18位算法 109 第3章 面向对象编程思想 111 3.1 面向对象家族核心——类与类成员 112 实例073 面向对象编程核心——类、对象和引用 112 ...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

如何取消更新值对话框