Setter.Target выдает ошибку с RelativePanel.AlignHorizontalCenterWithPanel

Я разрабатываю приложение UWP и использую Template10. У меня TextBlock что в VisualStateNarrow хочу RelativePanel.AlignVerticalCenterWithPanel="True" а в NormalMinWidth хочу RelativePanel.AlignHorizontalCenterWithPanel="True" но не могу этого сделать!

<VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="AdaptiveVisualStateGroup">
                    <VisualState x:Name="VisualStateNarrow">
                        <VisualState.StateTriggers>
                            <AdaptiveTrigger MinWindowWidth="{StaticResource NarrowMinWidth}"/>
                        </VisualState.StateTriggers>
                        <VisualState.Setters>

                           <Setter Target="TextBlock.RelativePanel.AlignVerticalCenterWithPanel="True"/>

                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="VisualStateNormal">
                        <VisualState.StateTriggers>
                            <AdaptiveTrigger MinWindowWidth="{StaticResource NormalMinWidth}"/>
                        </VisualState.StateTriggers>
                        <VisualState.Setters>

                          <Setter Target="TextBlock.RelativePanel.AlignHorizontalCenterWithPanel="True"/>

                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="VisualStateWide">
                        <VisualState.StateTriggers>
                            <AdaptiveTrigger MinWindowWidth="{StaticResource WideMinWidth}"/>
                        </VisualState.StateTriggers>
                        <VisualState.Setters>
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>

В редакторе XAML выдайте мне эту ошибку: «Было исключение». - «Не удается разрешить TargetProperty RelativePanel.AlignHorizontalCenterWithPanel для указанного объекта».

У меня много Setter.Target и все они работают! Пример моего Setter.Target:

<Setter Target="TextBlock.Margin" Value="8"/>
<Setter Target="TextBlock.Width" Value="200"/>
<Setter Target="TextBlock.Height" Value="200"/>

person Fernando Sousa    schedule 10.06.2017    source источник


Ответы (2)


Для прикрепленных свойств вы должны добавить скобки в сеттеры следующим образом:

Element.(Grid.Row)
Element.(ToolTipService.ToolTip)

Итак, ваш код будет выглядеть так:

<Setter Target="TextBlock.(RelativePanel.AlignVerticalCenterWithPane‌​l)" Value="True" />
person Marian Dolinský    schedule 10.06.2017
comment
Я думаю, что вы скопировали слишком быстро здесь. Должно быть <Setter Target="TextBlock.(RelativePanel.AlignVerticalCenterWithPanel)" Value="True" />. ;) - person Justin XL; 11.06.2017

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

  1. Перейдите на панель Состояния, нажмите, чтобы активировать визуальное состояние, к которому вы хотите добавить сеттеры. Рядом с названием этого визуального состояния появится красная точка.
  2. После активации перейдите на панель Объекты и временная шкала и выберите элемент, с которым вы хотите взаимодействовать в этом состоянии. В вашем случае выберите элемент TextBlock.
  3. Перейдите на панель Properties, либо разверните раздел RelativePanel, либо найдите «относительный» в поле поиска. Как только появятся свойства, просто выберите те, которые хотите изменить. .

Это все! Не стесняйтесь также проверить демонстрацию GIF ниже.

введите здесь описание изображения

person Justin XL    schedule 11.06.2017