私はこのListView
有する:このListView CheckBoxはなぜ行アイテムではなく、ビューモデル全体にバインドされていますか?
<Window.DataContext>
<vm:PersonPickListViewModel />
</Window.DataContext>
....
<ListView Grid.Row="0" Grid.Column="0" ItemsSource="{Binding PeopleOptions}" IsEnabled="{Binding ListEnabled}" SelectionMode="Multiple" >
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.HeaderTemplate>
<DataTemplate>
<CheckBox DataContext="{Binding ElementName=PersPickList, Path=DataContext}" IsChecked="{Binding AllSelected}" Command="{Binding ToggleSelectAll}" CommandParameter="{Binding ElementName=PersPickList, Path=DataContext}" />
</DataTemplate>
</GridViewColumn.HeaderTemplate>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding GivenName}" />
</GridView>
</ListView.View>
</ListView>
AllSelected
そのモーダルではなく、Aのプロパティであるため、ヘッダテンプレートチェックボックス用DataContext
は、具体的であり、そしてIは、局所的に想定した、全体のviewmodelに設定され、PersonPickListViewModel
をアイテムオブジェクト、すなわちPeopleOptions
のメンバー、すなわちPickListPerson
を含む。
セルテンプレートの中にはPickListPerson.IsSelected
がバインドされているため、ヘッダーではなく行のデータコンテキストを想定していると思います。 Binding
の後に "Path"と入力すると、PickListPerson
のプロパティではなく、すべてPersonPickListViewModel
のプロパティのリストが表示されます。
私は間違っていますが、どうすれば修正できますか?
@lukbl類似点は見当たりません。まず、彼はある要素を別の要素にバインドしようとしていますが、それは私の意図に近くありません。私の問題は、行チェックボックスを各行の 'IsSelected'プロパティにバインドすることです。チェックすると正しい行に' IsSelected'が 'true 'に設定されます。私は "この行のアイテム"にバインドすることを可能にするバインディング式を見つけることができません。これで、ビューモデル全体のプロパティのいずれかにバインドできますが、行アイテムのプロパティをデータバインドすることはできません。 – ProfK
あなたはそれについて正しいです、私はあなたの質問を誤解しました。このようにBindingを指定することによってエラーが出るのですか、それともintellisenseの問題だけですか? PeopleOptionsのタイプは何ですか?似たようなxamlの私の場合は、期待どおりに動作します。 – lukbl
'PeopleOptions'は' ObservablleCollection 'です。' IsSelected'は 'SelectablePerson'のプロパティです。 出力ウィンドウにエラーは表示されませんが、ReSharperはバインディングで 'IsSlected'を赤く鳴らし、別のプロパティを試してみると、私の全体の' DataContext'のプロパティリストを取得します。 PersonPickListViewModel' –
ProfK