Nie, nie masz wsparcia Trigger
w UWP.
Obejście polega na użyciu DataTriggerBehavior
z ChangePropertyAction
, aby osiągnąć dokładnie to samo.
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>
Należy pamiętać, że trzeba będzie to
BehaviorsXamlSDKManaged
z
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\
. Otrzymasz ostrzeżenie, gdy dodasz referencję, ale zignorujesz ją.
Aktualizacja: Powinieneś być coraz zaktualizowaną Behavior SDK z nuget teraz.
Opcja 2
Zawsze można zrobić to samo w VisualStateManager
. Otwarte Mieszanka i kliknij prawym przyciskiem myszy na Button
i wybierz Edycja szablonu, Edycja Kopiuj a następnie podać nazwę zasobu chcesz i uderzył OK.
Potem poszukaj NiepełnosprawnychVisualState
i zastąpić go
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
</VisualState.Setters>
</VisualState>
Masz rację o braku wyzwalaczy w UWP. Jestem bardziej przyzwyczajony do WPF i nie zdawałem sobie sprawy, że to zrobili. Trochę spójności pomiędzy platformami byłoby miłe! –
@GlenThomas całkowicie się zgadzam. Spójrz na ogromną ilość kodu powyżej w porównaniu do WPF. :) –
Oczekuję, że zobaczą VisualStateManager jako zamiennik. –