WPF Button的属性 Content绑定字符串失败
来源:互联网 发布:电脑管家 激活windows 编辑:程序博客网 时间:2024/05/22 10:40
对于button的使用一般都不会涉及需要将content属性做绑定数据的操作。所以在网上也找到的有关资料也比较少。
现在我有一种需要,一个按钮显示的Content是根据绑定的字符串来的。
最开始我的做法是
<Grid x:Name="grid"> <Button x:Name="button" Width="100" Height="30" Content="{Binding Text}" Click="Button_Click"></Button> </Grid>这个Text就是一个public string Text="xxxxx";
很显然没有起任何作用;
改进版的
private string _Text; public string Text { get { return _Text; } set { _Text = value; } }
依然不起作用,然后在网上找到的一些资料发现,Content不是string类型,而是object类型,不能直接绑定字符串;
接下来的做法是新建一个类,绑定一个类中的数据
public class ButBindingData { public ModelButBindingData() { Text = "列表模式"; } private string _Text ; public string Text { get { return _Text; } set { _Text = value; } } }依然无效,于是我在代码里手动写上了绑定
Binding binding = new Binding(); binding.Source = data; binding.Path = new PropertyPath("Text"); button.SetBinding(Button.ContentProperty, binding);我发现,手动设置这样的绑定是起作用的,那么为什么在xmal里设置不起作用呢。
左思右想,找了许多资料,发现了被我遗漏的最重要的一点,上下文属性未设置,那当然找不到要绑定的数据啊
所以最关键的一点是
grid.DataContext = data;
那么xmal里就可以这样写了
<Grid x:Name="grid"> <Button x:Name="button" Width="100" Height="30" Content="{Binding Text}" Click="Button_Click"></Button> </Grid>正确显示!
为了达到数据及时更新的目的,还需要一些操作:
public class PropertyChangedBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void Notify(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } public class ModelButBindingData : PropertyChangedBase { public ModelButBindingData() { Text = "666"; } private string _Text ; public string Text { get { return _Text; } set { _Text = value; Notify("Text"); } } }就是Text这个数据有变更是会及时通知UI主界面更新显示数据。
当然别忘了数据要
public ModelButBindingData data = new ModelButBindingData();
public属性,还要new出来。
以上就是实现Button的Content绑定数据的操作。
阅读全文
0 0
- WPF Button的属性 Content绑定字符串失败
- WPF 绑定到父元素属性 多行Text的Button
- WPF MVVM模式下获取Button的Content
- wpf数据绑定失败
- [WPF] WPF的按钮(Button)
- WPF中的属性绑定 binding
- WPF 自定义控件的依赖属性的绑定方法
- WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果
- wpf 控件的依赖属性和数据绑定
- WPF 如何在后台进行控件属性的绑定MVVM
- WPF DataGrid中列的属性绑定问题
- WPF中DataGrid控件内Button的Command和CommandParameter的绑定
- 将Button的Enabled属性绑定到变量,并使两个不同Button的此属性互斥
- WPF 的PROGRESSBAR绑定
- WPF元素的绑定
- WPF MVVM后台绑定没有Command属性的控件,绑定任何事件事件
- WPF Button Style 设定WPF BUTTON的 Style
- panel的content属性
- 大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk
- openfire+spark 在linux下安装,配置
- 函数优先级
- Android 拆解Launcher中的WorkSpace实现左右滑动效果
- springboot关于application的一些配置
- WPF Button的属性 Content绑定字符串失败
- 解决中文乱码
- Markdown编辑器写博客模板
- Python 条件语句和循环语句
- 错误:external symbol __imp__TransparentBlt@44
- Ceph集群中为静态web主机配置网关(redhat官方文档翻译)
- c++11、14、17新特性
- 解决Python中文注释报错
- C++类型转换