0

こんにちは。私の名前はユージーンです。まず第一に、私は私の貧弱な英語のためにあなたの許しを袋に入れます。次の質問があります。WPFアプリケーションのメインウィンドウにはTextBoxがあり、XAMLマークアップでは次のように説明しています。

<TextBox Name="tbxRange" Grid.Row="1" Grid.Column="3" TextAlignment="Center"
         Text="{Binding Path=CurCompassRange.Range, UpdateSourceTrigger=PropertyChanged,
         Mode=OneWayToSource, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"/>

このテキストボックスでは、浮動小数点数の値を出力します。Textプロパティの内容は、プログラムの実行を保留して何度も変更できます。MainWindowクラスには、フィールドとして次のメンバーがあります。

private static Double topMargin = 0;
private static Double bottomMargin = 0;
private static Double initialValue;

アプリケーションの実行開始時に1回割り当てられる「initialValue」への値。私は以下を必要としています。TextBoxに新しい数値を出力するときは、最初にその値を「initialValue」から減算する必要があり(「initialValue」自体の値は変更されません)、減算の結果を「bottomMargin」に格納し、次に出力された数値の値を格納する必要があります「initialValue」に追加する必要があり、追加の結果は「topMargin」に保存する必要があります。プログラムの実行を保留して、TextBoxのTextプロパティの内容を何度も変更できます。私の質問は次のとおりです。TextBox Textプロパティの値が変更されるたびに、上記の減算と加算を実行できるいくつかのトリガーをXAMLマークアップで記述できますか?もちろん、(C#で)TextBox TextInputイベントハンドラーを記述して、これらの操作を実行し、その本体で減算と加算を実行できることは知っていますが、XAMLマークアップでトリガーを使用する方がより優雅に思えます。私はあなたの助けに非常に感謝します。私はWPFがあまり得意ではありません。私を助けてください。

4

1 に答える 1

0

まず、"Top" または "Bottom" 自体は依存プロパティではないため、Margin.Top または Margin.Bottom を動的に変更することはできません。ただし、Margin 自体は、"Thickness" 型のインスタンスを受け取る依存関係プロパティです。つまり、Margin.Top だけを変更するつもりだったとしても、新しい Margin.. を適用する必要があるということです。

次に、実行する必要のあるさまざまな計算は、XAML を使用するだけで実行できるものではありません。コード ビハインドで値コンバーターを作成し、その値コンバーターを使用するように XAML バインディングを関連付ける必要があります。

したがって、単純な答えはノーです。XAML で説明したことを純粋な形式で実行することはできません。コード ビハインドを何らかの方法で記述する必要があります。

于 2013-02-19T15:07:56.847 に答える