Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

Нет, у вас нет поддержки 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\12.0\. Когда вы добавите ссылку, вы получите предупреждение, но просто проигнорируете ее.

Update: Теперь вы должны получить обновленный SDK Behavior от nuget.


Вариант 2

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

Затем найдите отключенный VisualState и замените его на

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

Ответ 2

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

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>