如何在Silverlight MVVM应用程序中使用self作为DataContext?

时间:2012-01-17 16:55:51

标签: binding silverlight-4.0 mvvm datacontext

在我的Silverlight MVVM应用程序中,在视图的代码隐藏中,我将DataContext设置为viewmodel:

this.DataContext = new MyViewModel();

但是,我需要将视图中的一个控件绑定到同一视图中的另一个控件。所以,我需要设置控件的DataContext,我将绑定添加到视图本身。

浏览后,似乎在 WPF 中执行此操作的最终方法是添加:

DataContext="{Binding  
    RelativeSource={RelativeSource FindAncestor,  
    AncestorType={x:Type UserControl}}

到控件。

然而,Silverlight 4中不存在AncestorType属性。 Silverlight 中是否存在用于此场景的等效,明确的代码行?我没有遇到任何显示最佳实践的网站或答案。

这可以帮助我回答earlier question,我试图在视图中绑定自定义控件和属性。

1 个答案:

答案 0 :(得分:1)

你能解释一下你想做什么吗?

您可以使用ElementName class

中的Binding

以下是msdn page的示例示例:

<Border Margin="10" BorderBrush="Silver" BorderThickness="3" Padding="8">
  <DockPanel>
    <TextBlock>Choose a Color:</TextBlock>
    <ComboBox Name="myComboBox" SelectedIndex="0">
      <ComboBoxItem>Green</ComboBoxItem>
      <ComboBoxItem>Blue</ComboBoxItem>
      <ComboBoxItem>Red</ComboBoxItem>
    </ComboBox>
    <Canvas>
      <Canvas.Background>
        <Binding ElementName="myComboBox" Path="SelectedItem.Content"/>
      </Canvas.Background>
    </Canvas>
  </DockPanel>
</Border>