2012-03-11 2 views
7

iv'e получил 2 панели в приложении игрыПривязка к свойству DataContext другого элемента управления

они оба связаны с различными элементами.

GameDetailsPanel.DataContext = game ; 

    GameBoardPanel.DataContext = gameBoard ; 

* Игра имеет Turn свойство *.

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

Теперь мне нужно, чтобы связать один GameBoardPanel к значению Turn свойств

* , например: что-то вдоль линий *

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

Как я могу ссылаться GameDetailsPanel.DataContext в моей привязке?

ответ

4

Я бы рекомендовал иметь свойства вашей игры и игры на модели оболочки, а затем установить 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

Да, я подумал, что я просто подумал, может быть, я смогу обойти это , потому что мне нужно только это для этого конкретного места. –

+0

Проверьте мое изменение выше для другого варианта, если вы ищете простой одноразовый привязку. – KodeKreachor

12

В интересах поисковиков вы можете привязать к datacontext другого элемента управления как подробно here.

Быстрое решение в моем случае выглядела так:

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

где «ucClientDetails» был пользовательский элемент управления, связанный с ViewModel, содержащий подробную информацию клиента (в том числе FullName).

1

использование просто

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

связывающий этот элемент.

Смежные вопросы