2011-10-21 36 views
0

内另一个目的考虑以下所示上的数据上下文属性绑定到包含在数据上下文

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结合的MyViewModelIsSelected财产。我怎么做?

+0

你在哪里存储MyViewModel的实例?此外,如果它不是设置为DataContext的,它不是一个真正的视图模型... –

+0

正如我已经说过,MyViewModel的实例被分配给某个类的数据属性。而它在我的掌握,其第三部分控件做到这一点。 – Rishabh

回答

0

首先,我会考虑抛弃第三方控件,做了这样的赔率与ItemsControl如何正常工作。你的数据上下文应该是你的视图模型。期。

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

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