Привязка к свойству DataContext другого элемента управления - PullRequest
8 голосов
/ 11 марта 2012

iv'e получил 2 панели в игре приложения

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

    GameDetailsPanel.DataContext = game ;

    GameBoardPanel.DataContext = gameBoard ;

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

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

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

*: что-то вроде

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

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

Ответы [ 3 ]

17 голосов
/ 20 ноября 2013

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

Быстрое решение в моем случае выглядело так:1007 * где 'ucClientDetails' был пользовательским элементом управления, привязанным к модели представления, содержащей сведения о клиенте (включая FullName).

4 голосов
/ 11 марта 2012

Я бы порекомендовал иметь ваши свойства game и gameBoard в модели представления обертки, а затем установить текст данных вашего представления в модель представления обертки.Таким образом, в привязке Fill вашей кнопки вы можете просто ссылаться на соответствующее свойство в вашей модели представления:

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

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

Однако для более одноразовых сценариев вы можете использовать относительный атрибут связывания источника и перехватить контекст данных другого элемента., как в этом примере: Доступ к родительскому DataContext из DataTemplate

2 голосов
/ 21 января 2016

используйте просто

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

этот элемент привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...