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?
答案 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>
这个元素绑定。