Проблемы с привязкой данных к командам в UserControl - разделение DataContext? - PullRequest
0 голосов
/ 06 декабря 2010

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

Теперь я на следующем этапе - команды привязки данных. Моя текущая структура выглядит так:

Окно --contains -> UserControlB --contains -> UserControlA

Теперь свойства привязки данных в UserControlA работают отлично, и мой UserControlB предоставляет те же свойства, так что Window может косвенно изменять UserControlA. Проблема в том, что DataContext UserControlB имеет примерно такой вид:

<UserControl x:Name="root">
  <Grid DataContext="{Binding ElementName=root}">
  ...
    <Button Command="{Binding MyCommand}" />
  ...
  </Grid>
</UserControl>

Но я хочу, чтобы MyCommand был привязан к моей ViewModel. Я думал, что возможно установить DataContexts отдельно, но как мне заставить кнопки указывать на мою ViewModel в XAML?

Я нашел пост, связанный с , но это не похоже на то, что я хочу сделать. Я хочу создать ViewModel в коде, а не в XAML.

1 Ответ

1 голос
/ 06 декабря 2010

Ваша привязка должна выглядеть примерно так:

<Button Command="{Binding Path=DataContext.MyCommand, RelativeSource={RelativeSource     Mode=FindAncestor, AncestorType={x:Type TypeOfYourControlWithViewModelDataContext}}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...