テキストが 3 つの異なるプロパティにバインドされている 3 つのテキストブロックがあります。
<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」。もう 1 回クリックすると、メートルに戻されます。
に基づいて値を変換しただけのコマンドを追加することを考えていましたbool isMeters
。ただし、テキストブロックの値は常に (毎秒) 更新されるため、値が変更されるたびに関数を呼び出す必要はありません。この機能を実現するために私が考えていないより簡単な方法はありますか?
ノート:
1 meter = 3.2808 ft
1ft = 0.3048 meter