从多个源绑定ListView时,数据绑定或DataContext问题

时间:2013-05-23 16:23:00

标签: wpf xaml binding datacontext

我无法弄清楚如何将我的列表视图绑定到ViewModel中的两个属性和视图模型中的列表。

是否可以覆盖ListViews ItemsSource并将ListView中的Checkbox直接绑定到父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>

1 个答案:

答案 0 :(得分:3)

有两种可能的方式:

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