最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

世界短讯!MAUI新生5.2-样式外观:控件状态样式VisualState

来源:博客园

(当前版本V7.0.94,VisualState有bug)


(资料图片仅供参考)

控件状态指控件当前处于什么使用状态,如禁用、聚焦、鼠标悬停等等,当控件进入到某种状态时,可以通过【附加属性】【VisualStateManager.VisualStateGroups】设置特定的样式。VisualStateManager.VisualStateGroups的使用结构,套了几层集合,有些复杂,如下图所示:

一、MAUI为可视化控件提供了丰富的内置状态,大多数时候,我们主要通过内置状态来管理控件的状态样式,但如果无法满足开发需求,也可以自定义状态。内置状态包括:

所有派生自VisualElemnet的视觉控件:Normal、Disabled、Focused、PointerOver

Button和ImageButton特有:Pressed

CheckBox特有:IsChecked

RadioButton特有:Checked、Unchecked

Switch特有:On、Off

CollectionView特有:Selected

CarouselView特有:DefaultItem、CurrentItem、PreviousItem、NextItem

二、使用控件中定义和使用控件状态样式

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

三、在样式中定义和使用控件状态样式

四、在一个控件状态中,影响其它控件的样式

            

五、自定义控件状态及其样式

1、XAML定义和使用状态样式

                                                                                                                                                                                                                                                                                                                                                                                                

2、通过后台代码改变控件状态

public partial class MainPage : ContentPage{    public MainPage()    {        InitializeComponent();        //初始化后,调用GoToState函数,设置状态        GoToState(false);    }    //OnTextChanged事件处理程序,使用正则对输入值进行判断。如果符合正则规则,则调用GoToState函数并传入true,反之传入false    void OnTextChanged(object sender, TextChangedEventArgs args)    {        bool isValid = Regex.IsMatch(args.NewTextValue, @"^[2-9]\d{2}-\d{3}-\d{4}$");        GoToState(isValid);    }    //通过GoToState函数设置状态    //根据传入的参数值,如为true,则状态为Valid;如为false,则为Invalid    void GoToState(bool isValid)    {        string visualState = isValid ? "Valid" : "Invalid";        //VisualStateManager.GoToState方法,设置控件状态,参数①为控件对象,参数②为状态的字符串值        VisualStateManager.GoToState(stackLayout, visualState);    }}

关键词: 控件状态 如下图所示