gpt4 book ai didi

c# - ReactiveUI 中的复合输出属性

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

我有一个关于 reactiveui View 模型的问题。

我的 View 模型上有两个属性,月和年,并希望有一个进一步的输出属性 DateLabel,它将两者结合起来并很好地格式化,例如“2015 年 1 月”。

这第三个属性依赖于其他两个属性,因为任何更改都应该更新,并且任何绑定(bind)到此属性的东西也应该更新。

阅读 ReactiveUI 文档后,我认为输出属性是我所需要的,但我只能在一个或另一个依赖属性未发生变化时更新标签。这是通过以下代码实现的。

readonly ObservableAsPropertyHelper<string> dateLabel;

public string DateLabel {
get { return dateLabel.Value; }
}

this.WhenAnyValue (x => x.Month)
.Select (x => CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName (x) + this.Year)
.ToProperty (this, x => x.DateLabel, out dateLabel);

this.WhenAnyValue (x => x.Year)
.Select (x => CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName (this.Month) + x)
.ToProperty (this, x => x.DateLabel, out dateLabel);

在这个例子中,第二个 WhenAnyValue 似乎覆盖了第一个,因此 Year 的任何变化都反射(reflect)在 DateLabel 的变化中,但对 Month 的任何变化都没有,如果我切换顺序那么对 Month 的任何变化都会反射(reflect)出来而不是年的任何更改。

我确定我只是遗漏了一些真正基础的东西,我们将不胜感激任何帮助。

谢谢,埃德

最佳答案

尝试以下操作:

this.WhenAnyValue (x => x.Month, y => y.Year )
.Select (x => String.Format("{0} {1}", CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName (x.Item1), x.Item2))
.ToProperty (this, x => x.DateLabel, out dateLabel);

我认为这会如您所愿!

关于c# - ReactiveUI 中的复合输出属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29004026/

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