考虑下面显示的情景
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}" />
类SomeControl
和SomeClass
是我无法修改的第三方类。在内部,SomeControl
创建SomeClass
的实例,并将我的视图模型分配给其Data
属性。因此,我的ItemTemplate的数据上下文是SomeClass
我想将IsSelected
上的SomeClass
属性绑定到IsSelected
的{{1}}属性。我该怎么做?
答案 0 :(得分:0)
首先,我会考虑放弃第三方控件,这样做与ItemsControl
正常工作的方式不一致。您的数据上下文应该是您的视图模型。周期。
那就是说,如果项目容器是这样的SomeClass
,你应该可以解决它:
<SomeControl ...>
<SomeControl.ItemContainerStyle>
<Style TargetType="SomeClass">
<Setter Property="IsSelected" Value="{Binding Data.IsSelected, Mode=TwoWay}"/>
</Style>
</SomeControl.ItemContainerStyle>
</SomeControl>