web-dev-qa-db-de.com

Das Triggerelement (XAML) wird in einem UWP-Projekt nicht unterstützt

Ich entwickle eine Universal-Windows-Anwendung für Windows 10. Eines der ersten Dinge, die ich gefunden habe, ist, dass das Trigger-Element (XAML) beim Stylen von Bildern nicht unterstützt wird. Hier ist der Code, den ich implementieren möchte:

 enter image description here

Entschuldigung, ich musste hier ein Image verwenden, ich bekomme es von meiner VM.

Wie wird diese Art von Trigger jetzt in einer Universal Windows App implementiert?

16
Ray

Nein, Sie haben keine Trigger-Unterstützung in UWP.

Eine Problemumgehung besteht darin, DataTriggerBehavior mit einem ChangePropertyAction zu verwenden, um genau dasselbe zu erreichen.

  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>

Beachten Sie, dass Sie BehaviorsXamlSDKManaged aus C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\ einfügen müssen. Sie erhalten eine Warnung, wenn Sie die Referenz hinzufügen, aber ignorieren Sie sie einfach.

Update: Sie sollten jetzt ein aktualisiertes Behavior SDK von nuget erhalten.


Option 2

Sie können in VisualStateManager immer dasselbe tun. Öffnen Sie Blend und klicken Sie mit der rechten Maustaste auf Button. Wählen Sie Vorlage bearbeiten, Kopie bearbeiten, geben Sie den gewünschten Ressourcennamen an und drücken Sie _.

Suchen Sie dann nach DisabledVisualState und ersetzen Sie es durch

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

Alternativ können Sie die Namespaces verwenden

xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"

mit 

<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>
1
dontbyteme