我使用帶有 MVVM 架構的 MAUI.NET。因此,我不想通過事件來管理事情。
我想想象兩個時刻:
- 當用戶將滑鼠懸停在按鈕上時
- 當用戶點擊按鈕時
在這些時刻之后,我想要按鈕看起來很正常,因為什么也沒發生。
我剛剛找到了一種管理第二時刻的方法(按下按鈕后)。
我設法做的是在全域 ResourceDirectory 中為按鈕設定 VisualState,如下所示:
<Style TargetType="Button" x:Key="HideButtonStyle">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="{StaticResource MediumDarkColor}" />
<Setter Property="Scale" Value="1" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="{StaticResource HideColor}" />
<Setter Property="Scale" Value="1.07" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>
我嘗試了其他狀態,例如“專注”。
按鈕似乎是普通按鈕:
<Button Grid.Row="2" Style="{StaticResource HideButtonStyle}" Text="123" Command="{Binding GetSourceFilePathCommand}"/>
問題是有些按鈕會立即恢復到“正常狀態”,而有些則不會。當用戶點擊其他東西時,它最終恢復正常。
我已經調查這是否不是由于命令中的異步,但不是。似乎恢復正常狀態的按鈕(在我看來是正確的)是觸發對話框的按鈕。
我想在用戶按下按鈕后,它會在 2-3 秒內獲得顏色等,然后??自動恢復到正常狀態。
如果我可以表示用戶將滑鼠懸停在按鈕上并讓我們說縮放它,并在用戶按下按鈕時發出信號并為其著色片刻,那就太棒了。
uj5u.com熱心網友回復:
maui目前沒有IsMouseOver檢測mouseover事件,可以繼續關注這個GitHub提案。
單擊按鈕更改顏色可以使用觸發器,請參考以下代碼:
<Button Text="Click Me">
<Button.Triggers>
<Trigger TargetType="Button"
Property="IsFocused" Value="True">
<Setter Property="BackgroundColor" Value="Pink"/>
</Trigger>
</Button.Triggers>
</Button>
您還可以將屬性更改為 Scale 以實作單擊縮放功能。
uj5u.com熱心網友回復:
我想在用戶按下按鈕后,它會在 2-3 秒內獲得顏色等,然后??自動恢復到正常狀態。
那為什么不使用影片呢?它們在 MAUI 中非常易于使用,并且由于您對 VisualState “按下”方法不滿意,因此可以嘗試一下。
例子:
private async Task AnimateElement(VisualElement element)
{
isAnimating = true;
await element.FadeTo(0, 300);
await element.FadeTo(1, 300);
isAnimating = false;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/532211.html
