绑定到另一个控件的DataContext的属性

时间:2012-03-11 03:42:32

标签: wpf data-binding

iv在应用游戏中有2个面板

它们都绑定到不同的元素。

    GameDetailsPanel.DataContext = game ;

    GameBoardPanel.DataContext = gameBoard ;

* 游戏有转动属性*

    public Class Game 
    {
        public bool Turn{ get; set;}             
    } 

现在我需要将GameBoardPanel中的一个绑定到Property Turn的值,

* 例如:*

的内容
   <Button Fill={Binding Source=GameDetailsPanel.DataContext , Path=Turn } ></Button>

如何在绑定中引用GameDetailsPanel.DataContext?

3 个答案:

答案 0 :(得分:17)

为了搜索者的利益,您可以将详细here绑定到另一个控件的datacontext。

我案例中的快速解决方案如下:

<TextBlock Text="{Binding ElementName=ucClientDetails, 
                          Path=DataContext.FullName}"></TextBlock>

其中'ucClientDetails'是绑定到包含客户端详细信息(包括FullName)的视图模型的用户控件。

答案 1 :(得分:4)

我建议在包装器视图模型上使用game和gameBoard属性,然后将视图的datacontext设置为包装器视图模型。这样,在按钮的Fill绑定中,您可以简单地在视图模型上引用相应的属性:

public Class Wrapper_ViewModel
{
    public Game game{ get; set; } 
    public T gameBoard{ get; set; }           
}

<Button Fill={Binding Path=game.Turn} ></Button>

但是,对于更多的一次性场景,您可以使用相对源绑定属性并挂钩另一个元素数据上下文,如下例所示: Access parent DataContext from DataTemplate

答案 2 :(得分:1)

简单地使用

<Button Fill="{Binding ElementName=GameDetailsPanel,Path=DataContext.Turn}"></Button>

这个元素绑定。