У меня есть три текстовых блока, текст которых связан с тремя различными свойствами.Преобразование постоянно обновляемых единиц в текстовые поля по команде
<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}" />
Эти свойства в ViewModel:
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 имущества текстовых блоков. То, что я пытаюсь сделать, - это когда я 'click' (через команду) на отдельном текстовом блоке (это будет внутри кнопки с использованием шаблона управления), я хочу преобразовать значения в приведенных выше текстовых блоках в ногу и добавить «F» после значения. Еще один щелчок преобразует его обратно в метры и т. Д.
Я думал о добавлении команды, которая просто преобразует значения на основе bool isMeters
. Тем не менее, значения в текстовом блоке постоянно обновляются (каждую секунду), и я не хочу, чтобы вы вызывали функцию каждый раз, когда значения меняются. Есть ли более простой способ, я не думаю, чтобы достичь этой функциональности?
Примечание:
1 meter = 3.2808 ft
1ft = 0.3048 meter