gpt4 book ai didi

c# - 更新自动计算的属性的绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:58 25 4
gpt4 key购买 nike

我在 WPF 中有 3 个文本框绑定(bind)到我的业务对象的三个属性。文本框允许用户输入三种不同的长度。

然后我将许多文本 block 绑定(bind)到其他属性,这些属性显示来自 3 个输入的简单计算。这些属性的值在每个属性的get方法中计算如下:

public double Length1 { get; set }
public double Length2 { get; set }
public double Length3 { get; set }
public double Result1
{
get { return Length1 - Length2 - Length3; }
}
public double Result2
{
get { return Length1 + Length2 + Length3; }
}

在更改 Lengths1、2 或 3 后如何更新 Result1 和 Result2 的绑定(bind)?

谢谢

最佳答案

如果您的 ViewModel 正在实现 INotifyPropertyChanged 事件,您希望(不幸的是)放弃那些自动属性,并在 Length1、Length2 或 Length3 发生更改时引发 PropertyChanged 事件。

PropertyChanged(this, new PropertyChangedEventArgs("Result1"));

private double _length1;
public double Length1 {
get { return _length1; }
set {
_length = value;
PropertyChanged(this, new PropertyChangedEventArgs("Result1"));
PropertyChanged(this, new PropertyChangedEventArgs("Result2"));
PropertyChanged(this, new PropertyChangedEventArgs("Length1"));
}

但这很快就会让人厌倦,所以我通常会实现一个辅助方法:

void RaiseThese(params string[] properties){
foreach(string prop in properties)
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}

然后

public double Length1 {
get { return _length1; }
set {
_length = value;
RaiseThese("Result1", "Result2", "Length1");
}

关于c# - 更新自动计算的属性的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com