Нет, у вас нет поддержки 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: Вы должны получить обновленный Behavior SDK из nuget Теперь.
Вариант 2
Вы всегда можете сделать то же самое в VisualStateManager
. Открыть смесь и щелкните правой кнопкой мыши на вашем Button
и выберите Edit Template, Редактировать Копию, а затем указать имя ресурса вы хотите и нажмите OK .
Тогда обратите внимание на инвалидовVisualState
и заменить его
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
</VisualState.Setters>
</VisualState>
Вы правы по поводу отсутствия триггеров в UWP. Я больше привык к WPF и не понимаю, что они это сделали. Немного согласованности между платформами было бы хорошо! –
@GlenThomas полностью согласен. Посмотрите на огромное количество кода выше по сравнению с WPF. :) –
Я ожидаю, что они увидели VisualStateManager в качестве замены –