六、两个窗口间的数据绑定
来源:互联网 发布:240光束灯编程视频教程 编辑:程序博客网 时间:2024/05/17 02:37
本示例包含两个窗口,主窗口为MainWindow类,外加一个自定义窗口MyDialog(当作自定义对话框)。主窗口中有一个TextBlock控件和一个Button控件,当点击按钮后会打开MyDialog对话框,对话框中有一个ComboBox控件,当用户在ComboBox控件中选择项时,会同步更新主窗口中TextBlock的显示文本。
即,将MainWindow.TextBlock对象的Text属性和MyDialog中的ComboBox控件的SelectedItem属性进行绑定。Text属性自动从SelectedItem属性中取值。
为了让MyDialog窗口能够访问主窗口中的TextBlock对象,所以XAML要这样写:
<TextBlock Name="tbtxt" x:FieldModifier="public" Margin="10"/> <Button Content="打开对话框" Click="OnOpenDialog"/>然后,设计MyDialog的界面,声明ComboBox对象,并添加几个选项。
<ComboBox Name="cmb" > <sys:String>飞机</sys:String> <sys:String>坦克</sys:String> <sys:String>火车</sys:String> <sys:String>轮船</sys:String> <sys:String>大卡车</sys:String> <sys:String>拖拉机</sys:String> <sys:String>装甲车</sys:String> </ComboBox> <Button HorizontalAlignment="Center" Grid.Row="1" Margin="0,20" Content="OK" Click="OnClick"/>接着,在MyDialog类的构造函数中通过代码来设置Binding。
public MyDialog(Window owner) { this.Owner = owner; InitializeComponent(); // 设置Binding对象 Binding b = new Binding(); b.Path = new PropertyPath(ComboBox.SelectedItemProperty); b.Source = cmb; b.Mode = BindingMode.OneWay; b.StringFormat = "您选择的交通工具为:{0}"; MainWindow mw = Owner as MainWindow; // 使属性与Binding关联 mw?.tbtxt.SetBinding(TextBlock.TextProperty, b); }Window类有一个Owner属性,可以设置它的父窗口,这里,MyDialog作为弹出窗口,MainWindow作为父窗口,因此在实例化MyDialog时传递owner,使得代码能访问MainWindow。我这里为了方便省事,直接写了个带参数的构造函数。
注意此处的绑定,数据源是ComboBox控件,数据使用者是TextBlock,所以Binding的Source应为cmb实例,Path直接用依赖项属性标识即可。
最后调用TextBlock对象的SetBinding方法就可以设置Binding了。
为啥不用XAML来binding呢,因为这是跨窗口的绑定,用XAML很难写,用代码来写反而好处理。
运行程序,然后打开对话框,在对话框中选一个项,你会看到,父窗口中的显示文本会自动更新。
主窗口调用:
private void OnOpenDialog(object sender, RoutedEventArgs e)
{
MyDialog mydialog = new MyDialog(this);
mydialog.Show();
}
- 六、两个窗口间的数据绑定
- 关于两个窗口间的数据传递
- Reapter绑定两个表的数据
- 两个窗口间的通讯
- WIN32下线程和窗口的数据绑定
- WIN32下线程和窗口的数据绑定
- WIN32下线程和窗口的数据绑定(转)
- Google Data Binding Library 谷歌官方数据绑定库(六)创建的绑定类
- datalist 的两个绑定
- winform程序两个窗体间同步数据(三):建立父窗口与子窗口的父子关系(不使用线程)
- 关于WPF的两个窗口之间简单的数据传递
- MFC中两个不同窗口之间的数据交互
- WPF备忘录六(数据绑定篇)
- 数据绑定(六)使用XML数据作为Binding的Source
- Asp.Net2.0学习笔记(六):Asp.Net2.0的数据绑定
- Flex学习笔记(六)——数据的绑定(Binding)
- 单据管理窗口,上下两个datagridview查询时没有符合条件的记录时,绑定数据源的方法
- 六、窗口最大化的方法
- linux之间文件传输(使用ssh协议)
- 关于Chrome浏览器提示"该网页已屏蔽插件-adobe flash player"的解决办法
- android 手机测试时root
- Android Studio开发技巧集锦一
- Spring面试问答Top 25
- 六、两个窗口间的数据绑定
- 小知识。
- RecyclerView加头
- 问题:vue.js a标签href里有变量,函数拼接问题
- ACM-大牛的建议
- Android Studio 开发技巧集锦二
- Syser初始化所做的事
- react-native初始化项目的时候安装失败,如何解决
- tomcat配置server.xml文件