1

リスト ビューを ViewModel のプロパティとビュー モデルのリストの両方にバインドする方法がよくわかりません。

ListViews ItemsSource をオーバーライドし、ListView 内のチェックボックスを親 ViewModel に直接バインドすることは可能ですか?

このようなもの...

        <ListView ItemsSource="{Binding Path=SomeListInViewModel}">
            <ListView.View>
                <GridView>
                    <GridViewColumn>
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <DockPanel>
                                    <CheckBox 
                                        IsEnabled="{Binding SomePropertyInViewModel}" 
                                        IsChecked="{Binding SomePropertyInsideListObj, Mode=TwoWay}" />
                                </DockPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>
4

1 に答える 1

3

次の 2 つの方法があります。

1) ListView に名前を付ける

<ListView x:Name="MyListView" ItemsSource="{Binding Path=SomeListInViewModel}">

次に、バインディングで ElementName プロパティを使用します

IsEnabled="{Binding ElementName=MyListView, Path=Whatever}" 

2) バインディングで RelativeSource を使用する

IsEnabled="{Binding Path=Whatever, RelativeSource={RelativeSource AncestorType={x:Type ListView}}}" 

どちらの場合も、ビュー モデルが ListView の DataContext として設定されている場合、パスは次のようになりますDataContext.SomePropertyInViewModel

于 2013-05-23T17:00:58.827 に答える