0

2 つのプロパティを持つビュー モデルがあります。それらの 1 つは myDataGridSelectedItems です。これは、データグリッドの選択変更イベントで更新されます (イベントをコマンドに変換するために MVVM ライトを使用しています)。

2 番目のプロパティは myText です。これは、ビューにテキスト ボックスがあるテキストです。

私の見解では、テキストが dataGrid の選択に依存する textBox を持っています。選択が 1 つの項目である場合は、dataGrid の列の情報を textBox に入れます。選択が 0 または 1 より大きい場合、私はテキストボックスをクリアします。

そのために、次のコードを使用します。

<TextBox Height="23" HorizontalAlignment="Stretch" Margin="5,26,0,0" Name="mytextBox" VerticalAlignment="Top"
                 Text="{Binding ElementName=Principal, Path=DataContext.MyDatagridSelectedItems, Converter={StaticResource TextBoxValueConverter}}">

データ グリッドで 1 つの行を選択すると、textBox にテキスト (convert が返すテキスト) があり、複数の行を選択するかすべての行を選択解除すると空になるため、これは正常に機能します。

ただし、この方法ではバインディングを設定していないため、プロパティ myText は更新されません。これは、axml の Text プロパティのバインディングが、ビュー モデルのプロパティ myText ではなく、コンバーターを使用するためです。

したがって、textBox の Text プロパティに 2 つのバインディングを設定できるかどうか、または TextBox のテキストが変更されたときにビュー モデルの myText プロパティを更新する方法が存在するかどうか疑問に思っていました。

ありがとう。

4

1 に答える 1

1

間違った方法でやっています: 現在、ビューのコンバーターでエンコードされたビュー ロジックがあります。しかし、ビュー ロジックはまさに​​ビュー モデルの目的です。

ビュー モデルにそのテキスト ボックスのテキストのプロパティがあり、テキスト ボックスをそのプロパティにのみバインドする必要があります。
ビューモデルでは、選択に従って値を変更します。

于 2013-05-06T14:07:16.397 に答える