2012-03-11 39 views
7

iv'e得到2个板在应用中的游戏绑定到另一个控制的DataContext的性质

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

GameDetailsPanel.DataContext = game ; 

    GameBoardPanel.DataContext = gameBoard ; 

* 游戏中有一个打开属性*

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

现在我需要绑定GameBoardPanel之一的物业转向的价值,

* 例如:沿东西线*

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

我怎么可以参考GameDetailsPanel.DataContext在我的绑定?

回答

4

我会建议让您的游戏和gameBoard属性在包装视图模型上,然后将视图的datacontext设置为包装视图模型。在按钮的填补方式结合,你可以简单地引用相应的属性上您的视图模型:

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

+0

是的,我想到了,我只是想也许我可以解决这个 因为我只需要它在这个特定的地方。 – 2012-03-11 03:59:26

+0

如果您正在寻找简单的一次性装订,请查看我上面的编辑另一个选项。 – KodeKreachor 2012-03-11 04:14:09

12

为了搜索者的利益,你可以绑定到另一个控件的datacontext,详见here

在我的情况快速溶液看起来像:

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

其中“ucClientDetails”是结合于含有客户端细节(包括全名)一个视图模型的用户控件。

1

使用简单

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

此元件结合。

相关问题