1

内部にデータグリッドを持つユーザーコントロールがあり、これをいくつかの異なるページで再利用し、MV-VM を使用しています。

データ グリッドの SelectedItem 依存プロパティを、それを含むユーザー コントロールの依存プロパティとして公開するにはどうすればよいですか?

目標は、コントロールを使用するページで、グリッドの SelectedItem をページのビュー モデルのプロパティにバインドできることです。SelectedItem をビュー モデルから変更することにはあまり関心がありません。ほとんどの場合、現在の値を使用して作業を行います。

4

1 に答える 1

1

選択した項目をビュー モデルに認識させることが目標である場合は、ItemContainerStyle プロパティを使用できます。以下の例は、行の IsSelected プロパティを、行が表示している項目の IsSelected プロパティにバインドします。したがって、ビュー モデルは、バインドされたコレクション内のすべてのアイテムに対して is selected プロパティを持つことができ、親ビュー モデルに誰が選択されたかなどを伝えることができます。これは、SelectionUnit="FullRow" がある場合にのみ機能します。 . その場合、選択するセルにスタイルを設定します。

<dg:DataGrid 
   ItemsSource="{Binding Path=YourItems}"
   SelectionUnit="FullRow">

   <dg:DataGrid.ItemContainerStyle>
   <Style
      TargetType="{x:Type dg:DataGridRow}">
      <Setter
         Property="IsSelected"
         Value="{Binding IsSelected, Mode=TwoWay}" />
   </Style>
   </dg:DataGrid.ItemContainerStyle>

選択した項目について知る必要がある唯一のビュー モデルの場合、この方法で別の依存関係プロパティの必要性を回避できます。

于 2009-11-24T00:18:36.623 に答える