【发布时间】:2021-09-23 07:50:49
【问题描述】:
当我以编程方式更新视图模型时,我使用 MVVM 视图不会更新。
public class ViewModelBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
我的模型:
public class Payment:ViewModelBase
{
private long _paymentId;
private decimal _price;
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long PaymentId {
get { return _paymentId; }
set
{
_paymentId = value;
OnPropertyChanged(nameof(PaymentId));
}
}
public decimal Price {
get { return _price; }
set
{
_price = value;
OnPropertyChanged(nameof(Price));
}
}
}
我的视图模型:
class PaymentFactorViewModel : ViewModelBase
{
public PaymentFactorViewModel()
{
PaymentFactor = new PaymentFactor();
PaymentFactor.Price=350,000;
}
private Payment _paymentFactor;
public Payment PaymentFactor
{
get { return _paymentFactor; }
set
{
_paymentFactor = value;
OnPropertyChanged(nameof(PaymentFactor));
}
}
}
我的看法:
<TextBox x:Name="txtPrice" Text="{Binding PaymentFactor.Price,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged"/>
当我更改 TextBox.Text 时,ViewModel 会更新,但是当我以编程方式更改 ViewModel 时,View 不会更新。
例如,我在 ViewModel 构造函数中设置 PaymentFactor.Price=350,000 但 TextBox.Text 为 0。
【问题讨论】:
-
什么是
PaymentFactor?您只发布了Payment。 -
这是我的视图模型中的支付模型。
-
您没有指定数据上下文,例如元素名称
-
另外,请出示完整的 xaml 代码
-
我在 Xaml 中定义了 DataContext: