1

データベースにテーブルがあり、すべての行のコンテンツを (TextBlock として) 表示する必要があり、各 TextBlock の右側に TextBox を表示して、ユーザーが各行の値 (数値) を入力できるようにする必要があります。また、ユーザーが指定した値が負の場合、TextBox の色を変更できるようにする必要があります。

誰かが私にこれの手がかりを与えることができますか?

PD: Prism 4 と MVVM パターンと VS2010 Ultimate で WPF を使用しています

4

2 に答える 2

1

あなたが何を試したのかを知っていただけると助かりますが、データをDataGridor にバインドしたいのはほぼ確実ですが、絶対にもっと柔軟性が必要な場合は (これまでのところ、それはケース)ItemsControl、。Grid動的に作成するだけではいけません。

TextBox に関する質問と、値が負の場合に色を変更する方法は、実際にはレイアウトの方法とは別の質問です。ValidationそのためにWPFのコンポーネントを調べます。

于 2012-06-19T19:24:40.053 に答える
1

完全な解決策を提供することはできませんが、正しい方向に向けることはできます。

Nameまず、とのプロパティを含むデータ構造を作成し、プロパティ変更通知のINotifyPropertyChangedValueを実装します。

次にViewModel(または場合によってModelは ) を にObservableCollection<MyDataObject>し、データベースからのデータを入力します。

XAML では、コレクションにバインドされたItemsControlを使用し、 を上書きしItemTemplateて、各項目をHorizo​​ntalStackPanelまたはGridを含むとしてレンダリングLabelします。TextBox

TextBox.Foregroundプロパティについては、バインドされているのと同じ値にバインドしますが、値が 0 より上か下かを確認し、正しい色を返すバインディングでIValueConverterTextBox.Textも使用します。これはバインドであるため、値が変更されるたびに自動的に更新されます。

<TextBox Text="{Binding Value}"
         Foreground="{Binding Value, Converter={StaticResource MyCustomConverter}}" />
于 2012-06-19T19:25:08.117 に答える