UWP作业(一)控件学习

对UWP控件的一些认识了解

PasswordBox:
  PasswordBox这个控件实现了输入密码的功能,可以通过对passwordBox_PasswordChanged()函数的编写改变对密码的要求等(比如禁止某些输入的出现)。同时,该控件有“睁眼模式”,以看到密码本身。控件自带的“睁眼模式”允许鼠标点击情况下的密码显示。但是这样的模式下,没有办法通过一次点击让密码一直显示。改变的方法有几种,比如再加一个checkbox或者其他按钮来使PasswordRevealMode变成visible,这样就可以一直显示密码。但是根据日常生活经验,常常使用的是直接点击眼睛,而不是其他按钮。PasswordBox没有办法直接实现这个功能。

AutoSuggestBox:
  AutoSuggestBox实现了自动弹出选择项的功能,通过不同的函数来完成不同的任务,显示、选择和补全。但是三个函数的执行时间是一个容易搞错的点。根据资料,这三个函数的作用时间是:

  • TextChanged event fires every time we enter something in AutoSuggestBox.
  • QuerySubmitted event fires once we submit a query.
  • SuggestionChosen event fires when the query submission ended with choosing an item and viewing it in AutoSuggestBox.

一开始当我在同一个TextBlock输出来验证不同函数执行情况的时候,发现输出的内容总是SuggestionChosen函数中的。照我的理解,QuerySubmitted是我按了查询之后才运行的,没想到SuggestionChosen是在QuerySubmitted之后的。而且在不进行选择的情况下,单单按查询按钮,是不会执行QuerySubmitted函数的。我也还没有找到连接查询按钮的函数。
我简单了试了一下输出的功能,但是在表单填写中,常常有一种情况是提示已经输入过的内容,而提示的串是包含或者被包含于我的输入串中的。

于是对函数进行了改写:

        private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
        {
            if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
            {
                Selected.Clear();
                foreach (var item in suggestion)
                {
                    flag = 0;
                    if (item.ToString().Contains(sender.Text) || sender.Text.Contains(item.ToString()))
                    {
                        Selected.Add(item.ToString());
                        flag = 1;
                    }
                }
                if(flag==1)
                  sender.ItemsSource = Selected;
                if (first==1||flag==0)
                {
                    bool Find = suggestion.Any<string>(p => p==sender.Text);
                    if(Find==false)
                       suggestion.Add(sender.Text);
                    first = 0;
                }

            }
        }
        private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
        {
            toshow.Text = "finding";
            bool Find = suggestion.Any<string>(p => p == sender.Text);
            if (Find == false)
                suggestion.Add(sender.Text);
        }

这里写图片描述

但是由于没有办法直接通过这里写图片描述关联函数,使用起来不尽如人意。

DatePicker:
  DatePicker提供日期选择的功能。在未进行选择时,不能显示年、月、日这样的具体标签说明,或者以无输入的状态的形式显示,而是给出了当日的日期。默认状态下的年月日安排并不符合使用习惯。另外,我无法一项一项地选择,这并不太符合我个人日常的使用习惯。
这里写图片描述

AppBarSeparator
  AppBarSeparator的功能就是分割不同的app。uwp应该是可以绘制基本图形的,但是这里却有一个单独的控件用来分隔app图标。看到的时候觉得十分吃惊。
  但是对于分隔图标这一个基本任务,也可以有很多要求,使用竖线显然是不能满足所有人的要求的。一开始以为会有某些属性可以帮助修改,但是资料里说,要修改default属性,需要修改這些资源及预设的 ControlTemplate(https://msdn.microsoft.com/zh-tw/library/windows/apps/mt299106.aspx)。我觉得从一个程度上来说,这并不十分友好,也许我想做的只是一个比较简单的改动,却不能直接进行修改。

PersonPicture:
  PersonPicture控件用来显示用户头像,添加照片在ProfilePicture中,如<PersonPicture ProfilePicture="Assets/rabbit.png" />
  很多软件有点击头像看原图的功能,但是PersonPicture控件并不能直接查看,鼠标放上去也没有任何反应,给我的感觉就像一个圆形的容器,功能有些简陋。另外,ProfilePicture在选取原型图案时也比较暴力,无法人为操纵,会导致选取的位置不恰当,比如下图,却没有把兔子的身体部分放入圆框中:
这里写图片描述

  我对大多数控件的了解都很浅,所以有些功能可能存在我却不知道,希望今后的学习中能加深自己的认识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值