Элемент триггера (XAML) не поддерживается в проекте UWP

Я разрабатываю Универсальное приложение Windows для Windows 10, и одной из первых вещей, которые я нашел, является то, что элемент триггера (XAML) не поддерживается при стилизации изображений. Вот код, который я пытаюсь реализовать:

enter image description here

Извините, что мне пришлось использовать изображение здесь, я получаю его от своей виртуальной машины.

Как этот тип триггера реализован в универсальном приложении Windows?

2 ответов


нет, у вас нет Trigger поддержка в UWP.

обходной путь должен использовать DataTriggerBehavior С ChangePropertyAction чтобы выполнить то же самое.

  xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
  xmlns:Core="using:Microsoft.Xaml.Interactions.Core" 

<Button x:Name="MyButton" Width="140" Height="80" IsEnabled="False">
    <Image x:Name="MyImage" Source="Assets/xxx.jpg">
        <Interactivity:Interaction.Behaviors>
            <Core:DataTriggerBehavior Binding="{Binding IsEnabled, ElementName=MyButton}" Value="False">
                <Core:ChangePropertyAction TargetObject="{Binding ElementName=MyImage}" PropertyName="Opacity" Value="0.5" />
            </Core:DataTriggerBehavior>
        </Interactivity:Interaction.Behaviors>
    </Image>
</Button>

обратите внимание, что вам понадобится BehaviorsXamlSDKManaged С C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged.0\. Вы получите предупреждение, когда добавите ссылку, но просто проигнорируете ее.

обновление: Вы должны получать обновленную поведение SDK С nuget сейчас.


2

вы всегда можете сделать то же самое в VisualStateManager. Открыть Blend и щелкните правой кнопкой мыши Button и выберите Редактирование Шаблона, редактировать копию а затем укажите имя ресурса, которое вы хотите, и нажмите OK.

тогда ищите отключен VisualState и заменить

<VisualState x:Name="Disabled">
    <VisualState.Setters>
        <Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
    </VisualState.Setters>
</VisualState>

в качестве альтернативы вы можете использовать пространства имен

xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"

С

<ToggleButton Content="Execute"
              IsChecked="{Binding ButtonIndicator}"
              FontSize="8">
   <Interactivity:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="Checked">
            <Core:InvokeCommandAction Command="{Binding ExecuteCommand}" />
        </Core:EventTriggerBehavior>
   </Interactivity:Interaction.Behaviors>
</ToggleButton>