【发布时间】:2021-10-16 10:22:34
【问题描述】:
我正在尝试使用 MVVM 而不是背后的代码来实现我所能做的一切,但如果我有很多对象需要在条目更改时访问,我根本不知道如何做好。
Xaml:
<Entry x:Name="UpdatedCost"
TextChanged="UpdatedCost_TextChanged"/>
<Label x:Name="PriceDifLabel"/>
<Entry x:Name="CurrentCost"
Text="2.5"/>
<Entry x:Name="CurPriceUpdatedCostProfit"
Text="22%"/>
代码隐藏:
private void UpdatedCost_TextChanged(object sender, TextChangedEventArgs e)
{
if (double.TryParse(e.NewTextValue, out double UpdatedCost))
{
double diff = UpdatedCost - double.Parse(CurrentCost.Text);
string sign = diff > 0 ? "+" : "";
PriceDifLabel.Text = "(" + sign + string.Format("{0:0.0}", diff) +")";
PriceDifLabel.TextColor = diff > 0 ? Color.Red : Color.Green;
PriceDifLabel.BackgroundColor = Color.Yellow;
CurPriceUpdatedCostProfit.Text = ((int)((double.Parse(CurrentPrice.Text) - UpdatedCost) /
double.Parse(CurrentPrice.Text) * 100)).ToString() + "%";
}
}
我非常感谢尽可能详细的帮助将此方法转换为 MVVM 实现。如果相关,我的视图模型正在实现 MvvmHelpers 的 BaseViewModel。
非常感谢!
【问题讨论】:
-
我会为您的特殊格式和内容创建一个正面标签和另一个负面差异标签。然后,您可以将 IsVisible 属性绑定到 VM 中的某个属性,该属性决定它的价格是更高还是更低。
-
到底是什么问题?对我来说,这看起来像是“将其转换为 MVVM”编码请求。您是否尝试过创建属性、绑定它们、从另一个属性设置器更改/增加一个属性的通知等?
-
感谢 cmets。是的,我确实尝试过,但我是一个初学者,所以有很多问题,尤其是它是一个条目,我需要它的值和其他值。
-
CurrentPrice.Text是什么?它是一个常数吗?currentcost.text也是常数吗?