【wpf】绑定失效的情况
WPF 情况 绑定 失效
2023-09-11 14:14:50 时间
这种情况,也不知道这么总结,就说一下,当时情况!
proInfo 是一个复合类,作为 ComboBox 的 SelectItem的绑定对象。
proInfo 本身是一个复合对象,它内部成员对象,与一个Run控件进行的绑定!
一旦 ComboBox 的 SelectItem 被触发,或者说SelectItem生效后,上面这个绑定就失效了。
我目前的判断是,如果一个复合对象发生的变化,比如被赋值,那么,它内部成员对象参与的绑定都会失效!
2023年4月12日-----------
再次总结
这段时间,写代码,进一步确定了这个事实:
一个复合对象发生的变化,比如被赋值,那么,它内部成员对象参与的绑定都会失效!
那如何解决这个问题呢?就是将这个复合对象也设置通知!
例子:
public LightSourceInfo lightSourceInfo { get; set; } = new LightSourceInfo();
LightSourceInfo 是一个复合对象:
public class LightSourceInfo : BindableBase
{
public const string file_name = "光源参数";
private int channelValue1;
public int ChannelValue1
{
get { return channelValue1; }
set { SetProperty(ref channelValue1, value); }
}
private int channelValue2;
public int ChannelValue2
{
get { return channelValue2; }
set { SetProperty(ref channelValue2, value); }
}
}
它的子对象,参与了binding。
一开始没啥问题。 后来我加了个功能,就是信息保存到文本(序列化),开始时读取文本(反序列化)。这样就会多了一个赋值语句:
lightSourceInfo = JsonConfigCtrl.Read<LightSourceInfo>(LightSourceInfo.file_name);
这样我的绑定就基本失效了!
那么我如果我将lightSourceInfo 也添加通知属性,我的绑定就又成功了:
//因为加了配置读取,所以有了直接的赋值,有赋值,还想bingding,就需要加,通知属性!
private LightSourceInfo _lightSourceInfo;
public LightSourceInfo lightSourceInfo
{
get { return _lightSourceInfo; }
set { SetProperty(ref _lightSourceInfo, value); }
}
相关文章
- WPF 中如何使用第三方控件 ,可以使用WindowsFormsHost 类
- wpf开源界面收集
- WPF绘制自定义窗口
- WPF中XAML中使用String.Format格式化字符串示例
- wpf OpenClipBoard CLIPBRD_E_CANT_OPEN
- wpf Button 左键单击弹出菜单
- WPF 竖排文字(转)
- wpf 客户端【JDAgent桌面助手】开发详解(三) 瀑布流效果实现与UI虚拟化优化大数据显示
- WPF中的动画控制
- WPF中TreeView控件数据绑定和后台动态添加数据(一)
- WPF Template模版之DataTemplate与ControlTemplate【一】
- WPF快速入门系列(6)——WPF资源和样式
- WPF快速入门系列(3)——深入解析WPF事件机制
- 15.0:SPREAD.NET|SPREAD.WPF|SPREAD.ASP.NET
- WPF MVVM从入门到精通3:数据绑定