私はWindows 10のユニバーサルWindowsアプリケーションを開発していますが、最初に気付いたのは、画像のスタイリング時にトリガー要素(XAML)がサポートされていないことです。これが私が実装しようとしているコードです:
ここでイメージを使用する必要がありましたが、VMから取得しています。
このタイプのトリガーは、ユニバーサルWindowsアプリにどのように実装されていますか?
いいえ、UWPでのTrigger
サポートはありません。
回避策は、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>
_
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\
からBehaviorsXamlSDKManaged
を含める必要があることに注意してください。参照を追加すると警告が表示されますが、無視してください。
更新:nuget から更新Behavior SDKを取得する必要があります。
オプション2
VisualStateManager
ではいつでも同じことができます。 Blendを開き、Button
を右クリックしてEdit Template、Editを選択しますaコピーをクリックし、必要なリソース名を指定して[〜#〜] ok [〜#〜]を押します。
次に、DisabledVisualState
を探して、
_<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
</VisualState.Setters>
</VisualState>
_
または、名前空間を使用できます
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
と
<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>