Wygląda na to, że UWP XAML nie obsługuje wyzwalaczy w stylach. Jakie jest typowe obejście, aby wykonać wyzwalacze, takie jak poniższe?Brak wyzwalacza UWP
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="Visibility" Value="Collapsed">
<Setter Property="Text" Value="" />
</Trigger>
</Style.Triggers>
</Style>
W tej chwili widzę następujące opcje do osiągnięcia wyzwalaczy w UWP:
Stosować Animations lub VisualStateTriggers. Oba wydają się błędne, jeśli użyję ich, aby nie dostosowywać kontroli do ekranu.
Myślę, że znalazłem prawidłowy sposób realizacji wyzwalaczy w ogóle dla kontroli. Zobacz poniższy kod jako demonstracji:
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
<Border x:Name="BackgroundElement" Tag="Text">
<Interactivity:Interaction.Behaviors>
<Core:DataTriggerBehavior Binding="{Binding Tag, ElementName=BackgroundElement}" Value="Text">
<Core:ChangePropertyAction PropertyName="BorderBrush" Value="AliceBlue" />
</Core:DataTriggerBehavior>
</Interactivity:Interaction.Behaviors>
</Border>
byłoby niesamowite, jeśli istnieje rozwiązanie bez ElementName. Zrobiłbym to w WPF z AncestorType, ale tego też brakuje w UWP. W każdym razie wydaje się, że nie można używać stylów w stylu Core:DataTriggerBehavior
.
W UWP aplikacji, trzeba użyć [stany wizualne] (https://msdn.microsoft.com/library/windows/apps /windows.ui.xaml.visualstatemanager.aspx). – Herdo
Zobacz, jak utworzyć niestandardową funkcję StateTrigger (dziedziczą z StateTriggerBase), a następnie użyj jej wewnątrz stanu wizualnego –