将数据上下文的属性绑定到数据上下文中包含的另一个对象

时间:2011-10-21 08:15:18

标签: wpf xaml data-binding

考虑下面显示的情景

class MyViewModel
{
    public bool IsSelected {get;set;}
}

class SomeClass
{
    public bool IsSelected {get;set;}
    public object Data {get;}
}

<DataTemplate x:Key="ItemTemplate>
    <Image ... />
</DataTemplate>

<SomeControl ItemsSource={Binding MyViewModels}"
             ItemTemplate={StaticResource ItemTemplate}" />

SomeControlSomeClass是我无法修改的第三方类。在内部,SomeControl创建SomeClass的实例,并将我的视图模型分配给其Data属性。因此,我的ItemTemplate的数据上下文是SomeClass

我想将IsSelected上的SomeClass属性绑定到IsSelected的{​​{1}}属性。我该怎么做?

1 个答案:

答案 0 :(得分:0)

首先,我会考虑放弃第三方控件,这样做与ItemsControl正常工作的方式不一致。您的数据上下文应该是您的视图模型。周期。

那就是说,如果项目容器是这样的SomeClass,你应该可以解决它:

<SomeControl ...>
    <SomeControl.ItemContainerStyle>
        <Style TargetType="SomeClass">
            <Setter Property="IsSelected" Value="{Binding Data.IsSelected, Mode=TwoWay}"/>
        </Style>
    </SomeControl.ItemContainerStyle>
</SomeControl>