2015-08-10 5 views
14

Ich entwickle eine universelle Windows-Anwendung für Windows 10 und eines der ersten Dinge, die ich fand, ist, dass das Trigger-Element (XAML) beim Stylen von Bildern nicht unterstützt wird. Hier ist der Code, den ich zu implementieren versuchen:Trigger-Element (XAML) wird in einem UWP-Projekt nicht unterstützt

enter image description here

Leider hatte ich hier ein Bild zu verwenden, ich es von meinem VM bin immer.

Wie wird diese Art von Auslöser jetzt in einer Universal Windows App implementiert?

Antwort

17

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

Eine Problemumgehung besteht darin, DataTriggerBehavior mit einer 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 benötigen BehaviorsXamlSDKManaged von C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\ aufzunehmen. Sie erhalten eine Warnung, wenn Sie die Referenz hinzufügen, aber ignorieren Sie sie einfach.

Update: Sie sollten eine aktualisierte Verhalten SDK von nuget jetzt bekommen.


Option 2

Sie können die gleiche Sache in VisualStateManager immer tun. Öffnen Mischung und klicken Sie rechts auf Ihrem Button und wählen Vorlage bearbeiten, Bearbeiten Sie eine Kopie und geben Sie dann den Namen der Ressource Sie möchten und klicken Sie auf OK .

Dann sind für die BehinderteVisualState und ersetzen sie durch

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

Du hast Recht über den Mangel von Triggern in UWP. Ich bin mehr an WPF gewöhnt und wusste nicht, dass sie das getan haben. Ein bisschen Konsistenz zwischen den Plattformen wäre schön gewesen! –

+0

@GlenThomas stimme völlig zu. Sehen Sie sich die große Menge an Code an, die Sie im Vergleich zu WPF gesehen haben. :) –

+0

Ich erwarte, dass sie den VisualStateManager als Ersatz sehen –

1

Alternativ können Sie die Namensräume 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> 
Verwandte Themen