Привязка данных значения Grid.Row встроенного UserControl не будет обновлять графический интерфейс - PullRequest
0 голосов
/ 30 августа 2018

У меня есть UserControl, который встраивает другое представление:

<UserControl x:Class="..."
             ...
             ...
             ... 
             xmlns:views="clr-namespace:Omega.GUI.Views"
             mc:Ignorable="d" 
             d:DesignHeight="700" d:DesignWidth="1000">

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition MinWidth="1" Width="1*"></ColumnDefinition>
      <ColumnDefinition Width="{StaticResource GridSplitterWidth}"/>
      <ColumnDefinition Width="1000*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    ...
    ...
    ...
    <views:SingleWizardView Grid.Row="{Binding SingleWizardViewGridRowController}" Grid.RowSpan="1" Grid.Column="2" Panel.ZIndex="150"  x:Name="SingleWizardViewDisplay" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
  </Grid>

Как видите, я хочу привязать значение Grid.Row к переменной SingleWizardViewGridRowController в View Model. Однако это не работает вообще. Чтобы проверить мою привязку данных в целом, я сделал фиктивную кнопку с той же привязкой данных, в той же позиции:

<Button Grid.Row="{Binding SingleWizardViewGridRowController}" Grid.Column="2" Panel.ZIndex="150" Content="dummy button" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

... и это прекрасно работает (я использую другую кнопку, которая изменяет значение SingleWizardViewGridRowController для тестирования).

Мой вопрос: является ли встроенное представление каким-то образом ограниченным, когда речь идет о значениях элементов сетки? Или я что-то здесь упустил?

1 Ответ

0 голосов
/ 30 августа 2018

У меня недостаточно репутации, чтобы комментировать, поэтому я спрошу здесь. Есть ли у SingleWizardView свой собственный DataContext? То есть вы устанавливаете DataContext для представления в его конструкторе или в другом месте в выделенном коде?

Вы также можете проверить окно «Вывод» или «Немедленно» на наличие ошибок привязки при отладке.

Edit:

Привязка в SingleWizardView просматривает DataContext для SingleWizardView, и поскольку SingleWizardViewGridRowController не является свойством DataContext SingleWizardView, привязка не работает.

Для привязки к работе вы можете попробовать, например, что-то вроде этого:

<views:SingleWizardView Grid.Row="{Binding DataContext.SingleWizardViewGridRowController, RelativeSource={RelativeSource FindAncestor, AncestorType=local:SingleWizardViewManager}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...