WPF使用MVVM模式时代码更新ViewModel后View未同步更新问题
问题原因
- XAML绑定语法错误:给出的TextBox绑定表达式末尾缺少闭合的
},导致WPF绑定引擎无法正确解析绑定路径,无法读取ViewModel的初始值。 - 构造函数赋值语法错误:
PaymentFactor.Price=350,000;不符合C#数值字面量编写规范,代码中数字不能直接使用逗号作为千分位分隔符,该代码存在编译错误,赋值逻辑未生效,Price保留decimal类型的默认值0。 - 类名实例化错误:你定义的支付数据类为
Payment,但在PaymentFactorViewModel构造函数中实例化的是不存在的PaymentFactor类,导致PaymentFactor属性未被正确初始化,其内部属性值均为默认值。
修复步骤
- 修正XAML绑定代码,补全表达式闭合符:
<TextBox x:Name="txtPrice" Text="{Binding PaymentFactor.Price,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
- 修正数值赋值语法,去掉千分位逗号,decimal类型建议增加
m后缀明确标识类型:
PaymentFactor.Price = 350000m;
- 修正构造函数中的实例化类名,和属性声明的类型保持一致:
public PaymentFactorViewModel() { PaymentFactor = new Payment(); PaymentFactor.Price = 350000m; }
- 额外校验:确保View的DataContext已正确绑定到
PaymentFactorViewModel的实例,可在View的后台构造函数中添加如下代码:
public YourViewName() { InitializeComponent(); DataContext = new PaymentFactorViewModel(); }
内容的提问来源于stack exchange,提问作者Hossein
相关产品推荐
相关产品推荐

