2012-01-17 70 views
0

以我的Silverlight MVVM应用,在视图中的代码隐藏,我设置在DataContext到一个视图模型为这样:如何在Silverlight MVVM应用程序中使用self作为DataContext?

this.DataContext = new MyViewModel(); 

然而,我需要一个控制在视图绑定到另一个在同一视图。所以,我需要设置控件的DataContext,并将绑定添加到视图本身。

浏览各地后,好像这样的WPF明确的方法是添加:

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

的控制。

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

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

回答

1

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

也许你可以使用ElementNameBindingclass

下面是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> 
+0

的问题是我想绑定到控件,而不仅仅是一个控件的属性。我创建了自己的控件,将BusyIndi​​cator扩展为具有Control类型的额外属性。目标是当BusyIndi​​cator失去焦点时,我对我绑定的控件调用Focus()命令。但是我无法在XAML中设置一个控件给我的额外属性,并认为它与DataContext相关。看到我的相关[问题](http://stackoverflow.com/questions/8855639/binding-a-usercontrol-to-a-custom-busyindicator-control)。 – 2012-01-17 19:16:16

+0

哦,我明白了 - 对不起,但我仍然不完全明白你的问题。 – 2012-01-18 07:10:07

相关问题