gpt4 book ai didi

wpf - 具有计算属性和依赖项跟踪的WPF C#ViewModel。模拟淘汰赛JS

转载 作者:行者123 更新时间:2023-12-03 10:54:40 35 4
gpt4 key购买 nike

是否有任何以Knockout JS方式实现MVVM的ViewModel的库。

因此,它应该使用自动Computed Properties支持Dependency Tracking

我没有发现可以无缝地用于通知和验证的东西(在Knockout JS中我怎么知道)。

或者,请给我一个建议,以解决当今的问题。

我有自己的代码库。它甚至支持对Func验证程序的依赖项跟踪(我也很喜欢)。
所有这些都是很久以前的,现在已经无法编译。

我的意思的一些例子。

public partial class MyViewModel : ValidatableViewModel

// Some property with the validator.

public Double? LoanAmount
{
get { return _innerDataObject.LoanAmount; }
set
{
_innerDataObject.LoanAmount = value;

// Validators with dependency tracking.
PropertyChangedInSetter(new ValidatableContext("LoanAmount")
{
FuncValidators = new List<Func<ValidationResult>>
{
() =>
{
if (LoanParametersEnabled == false)
return null;

if (LoanParametersUnrequired
&& LoanAmount.HasValue == false)
return null;

if (LoanAmount.HasValue == false)
return new ValidationResult(ErrorMessages.RequiredValue);

// ...
}
},

}
);
}
}

//一些已损坏的属性。
    public Double? LimitLoanProductCalculated
{
get
{
// dependency tracking for a computed property.
var res = GetComputedResult(() => GetSomeThingsForUi(
LimitLoanProductMax,
CardVariantOrNull,
LimitGlobalCalculated
));

return res;
}
}

最佳答案

我写了Moldinium,它对.NET执行Knockout样式的依赖项跟踪。

从自述文件:

Moldinium允许您定义如下类:

public abstract class Course : IModel
{
public abstract String Name { get; set; }

public abstract Room Location { get; set; }

public virtual String Description
=> $"course {Name} in room {Location.Name}";
}

public abstract class Room : IModel
{
public abstract String Name { get; set; }
}

您将获得以下内容,而无需任何其他代码:
  • 用于声明为abstract或virtual的所有属性的INotifyPropertyChanged的实现。
  • 更改Course.DescriptionCourse.Location时,属性Course.Location.Name将自动更新。
  • 关于wpf - 具有计算属性和依赖项跟踪的WPF C#ViewModel。模拟淘汰赛JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39820514/

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