2011-11-08 3 views
2

このデータコンバーターは、特に複数の行との関連性があり、画像を動的に表示/非表示にしています。DataGrid内の画像でコンバーターを使用する

マスター/ディテールデータの観点を取ることができます。特定のビュー(プレゼンテーション)で、ヘッダー情報と一連の広告申込情報を示すデータグリッドがあります。広告申込情報を保存する前に、欠落/無効なデータを含む1つ以上の行が存在する可能性があります。私はラインアイテムの左側にグラフィックイメージを表示して、ユーザーに視覚的な手がかりを与えたいと思っています...ねえ、この行を修正する必要があります...

私はViewModelにdatatableを持っていますデータ型の列型と同じように行に関連付けられたエラーがブール値であるかどうかを示す追加の列は、wpfの「可視性」データ型の処理方法がわかりません。このdatatable.DefaultViewは、実際に動作するデータを表示するための基本的なものです。私はちょうどこの最終的には、動的に表示/非表示に画像を取得することに固執しています。

私はコンバーターについて読んだことがあり、コンバーターとしての役割を果たすだけのクラスを持っています。だから、私は助けを提供できる人には次のように提案するしかありません。

私のViewModelは、[既定簡単にするために

public DataView MyDetailView 
{ get { return MyTable.DefaultView; }} 

を暴露性質を持って、このテーブルはBooleanToVisibilityConverterは非常に簡単であるべきバインディングを使用.. 2つの列があり

RecordIsInvalid (boolean), 
LineItem (int) 

答えて

1

<Image Visibility="{Binding RecordIsInvalid, 
        Converter={StaticResource BooleanToVisibilityConverter}}" ... /> 

しかし、あなたが理解している限り、単一のRecordIsInvalidフラグとLineNumberは、特定の行を参照します。実際に各行に何が結びついていますか?各行に対応するItemViewModelのようなものがありますか?基本的には各自の状態を確認し、IsValidプロパティを公開することで、各アイテムはきれいで簡単になりますので、各グリッドビューアイテムの範囲内でIsValidに簡単にバインドすることができます。

EDIT:回答はコメントする

あなたがインスタンス化し、自分自身を、コンバータを公開してはなりません。

  • * 1
  • が* 2
  • を参照して、XAML内のコントロール/ウィンドウのリソースにコンバータの追加を参照してください、Converetrsの名前空間のエイリアスを追加View.xamlで MyProject.GUI.Converters
  • ようないくつかの適切な名前空間で、コンバータクラスを入れて

* 1: MyView.xaml

<UserControl ... 
     xmlns:Converters="clr-namespace:MyProject.GUI.Converters" /> 

* 2: MyView.xaml

<UserControl.Resources> 
    <Converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> 
</UserControl.Resources> 
+0

これは、別のビューモデルによって処理されていません。これは、MAINビューモデルで公開される単なるデータビューです。コンバータに関しては、私は現在、別のクラスとしてそれを持っており、ビューモデル自体にはありません。コンバータを利用可能にする最良の方法は何ですか...クラスのインスタンス化されたインスタンスとして、それを公開するためにビューのDataContextのプロパティとして公開しますか?私はまだ、この複雑なXAML対ViewModel、静的な参照などのバインディング参照を学んでいます。 – DRapp

+0

@DRapp:更新された回答を参照してください、 – sll

+0

を編集してください。うん...それはそれをしました。私はもともと文脈を理解していませんでしたが、単一の要素のあなたの明確な例は(スーパーネストされている多くのものとは対照的に)直接ポイントに私を得た...ありがとう – DRapp

関連する問題