我试图创建简单的按钮,根据状态的不同,有不同的外观,一个经典的windows窗体按钮,但我找不到简单的方法来做MAUI。
到目前为止,我做了以下工作:
- 在xaml中用默认颜色定义按钮
<Button Text="POSITIVE" x:Name="positive" IsEnabled="True" VerticalOptions="Center" HorizontalOptions="CenterAndExpand" BackgroundColor="DarkGray"/>
- 我创建了一个变量来跟踪按钮的状态
public bool isPositivePressed = false;
- 在main函数中,我定义了单击操作的处理程序
positive.Clicked += (sender, args) =>
{
isPositivePressed = !isPositivePressed;
UpdateButtonVisualState(positive, isPositivePressed);
};
- 最后,该函数将根据参数传递的按钮的状态来改变按钮的颜色。
private void UpdateButtonVisualState(Button button,bool state){ button.BackgroundColor = state?颜色。来自Rgb(81,43,212):颜色。深灰色; }
此代码在Android模拟器中工作,但在真实的的Android手机中不工作。
有人能给我指出一个更好的和一致的方法来实现同样的行为吗?
谢谢
2条答案
按热度按时间jmp7cifd1#
如果我理解正确的话,你是想根据某个ViewModel的状态来做这件事,还是更多地围绕它当前是否被按下?如果是后者,希望下面的答案能有所帮助:)
实现此目的的一种方法是使用
VisualStateManager
样式(参见.NET Maui文档中的visual states)。我将可视化状态理解为一种“从代码中对UI进行可视化更改”的方法,允许您完全自定义Maui组件。如果您希望以编程方式(即在C#代码后面)执行此操作,请 checkout 定义自定义视觉状态文档。
作为一个例子,下面我在
ContentPage.Resources
中定义了视觉状态,但是你可以实现相同的逻辑,内联每个按钮,或者通过Styles.xaml
。在这个例子中,我只是在按钮被“按下”时更新按钮BackgroundColor
。mrphzbgm2#
您可以使用按钮的按下和释放方法。
下面是你可以在.xaml中引用的代码:
下面是后面代码中的代码。