我有三个文本块,其文本绑定到三个不同的属性。
<TextBlock Style="{StaticResource textBlockStyle2}"
Text="{Binding Path=TWD,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged},
StringFormat={}{0:F1} M}" />
<TextBlock Style="{StaticResource textBlockStyle2}"
Text="{Binding Path=Alt,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged},
StringFormat={}{0:F1} M}" />
<TextBlock Style="{StaticResource textBlockStyle2}"
Text="{Binding Path=Dep,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged},
StringFormat={}{0:F1} M}" />
这些是视图模型中的属性:
private double _TWD;
public double TWD
{
get { return _TWD; }
set { _TWD = value; OnPropertyChanged("TWD"); }
}
private double _Alt;
public double Alt
{
get { return _Alt; }
set { _Alt = value; OnPropertyChanged("Alt"); }
}
private double _Dep;
public double Dep
{
get { return _Dep; }
set { _Dep = value; OnPropertyChanged("Dep"); }
}
现在,这些以米为单位,这就是文本块的 StringFormat 属性中的“M”。我想要做的是,当我在单独的文本块上“单击”(通过命令)(这将在使用控制模板的按钮内部)时,我想将上述文本块中的值转换为英尺并添加值后的“F”。再次单击会将其转换回米,依此类推。
我正在考虑添加一个命令,该命令仅基于bool isMeters
. 但是,文本块中的值会不断更新(每秒),我不想每次值更改时都调用该函数。有没有我没有想到的更简单的方法来实现这个功能?
笔记:
1 meter = 3.2808 ft
1ft = 0.3048 meter