Không, bạn không có hỗ trợ Trigger
trong UWP.
Giải pháp thay thế là sử dụng DataTriggerBehavior
với ChangePropertyAction
để thực hiện chính xác điều tương tự.
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>
Lưu ý rằng bạn sẽ cần phải bao gồm
BehaviorsXamlSDKManaged
từ
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ExtensionSDKs\BehaviorsXamlSDKManaged\12.0\
. Bạn sẽ nhận được cảnh báo khi bạn thêm tham chiếu nhưng chỉ bỏ qua nó.
Cập nhật: Bạn nên nhận được một cập nhật Behavior SDK từ nuget bây giờ.
Lựa chọn 2
Bạn luôn có thể làm điều tương tự trong VisualStateManager
. Mở Blend và nhấp chuột phải vào Button
của bạn và chọn Sửa Template, Sửa Sao chép và sau đó ghi rõ tên tài nguyên mà bạn muốn và nhấn OK .
Sau đó tìm kiếm các DisabledVisualState
và thay thế bằng
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="RootGrid.(UIElement.Opacity)" Value="0.5" />
</VisualState.Setters>
</VisualState>
Nguồn
2015-08-11 04:59:39
Bạn nói đúng về việc thiếu của Trình kích hoạt trong UWP. Tôi quen với WPF hơn và không nhận ra họ đã làm điều đó. Một chút nhất quán giữa các nền tảng sẽ tốt đẹp! –
@GlenThomas hoàn toàn đồng ý. Nhìn vào số lượng lớn mã trên so với WPF. :) –
Tôi hy vọng họ nhìn thấy VisualStateManager như là một thay thế –