web-dev-qa-db-ja.com

トリガー要素(XAML)はUWPプロジェクトではサポートされていません

私はWindows 10のユニバーサルWindowsアプリケーションを開発していますが、最初に気付いたのは、画像のスタイリング時にトリガー要素(XAML)がサポートされていないことです。これが私が実装しようとしているコードです:

enter image description here

ここでイメージを使用する必要がありましたが、VMから取得しています。

このタイプのトリガーは、ユニバーサルWindowsアプリにどのように実装されていますか?

18
Ray

いいえ、UWPでのTriggerサポートはありません。

回避策は、DataTriggerBehaviorChangePropertyActionとともに使用して、まったく同じことを行うことです。

_  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 TemplateEditを選択しますaコピーをクリックし、必要なリソース名を指定して[〜#〜] ok [〜#〜]を押します。

次に、DisabledVisualStateを探して、

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

または、名前空間を使用できます

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