Элемент триггера (XAML) не поддерживается в проекте UWP
Я разрабатываю Универсальное приложение Windows для Windows 10, и одной из первых вещей, которые я нашел, является то, что элемент триггера (XAML) не поддерживается при стилизации изображений. Вот код, который я пытаюсь реализовать:
Извините, что мне пришлось использовать изображение здесь, я получаю его от своей виртуальной машины.
Как этот тип триггера реализован в универсальном приложении 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>