WP8.1 Study4:WP8.1中控件集合应用

1、AutoSuggestBox的应用

在xaml里代码可如下:

<AutoSuggestBox Name="autobox"
                            Header="suggestions" 

                            GotFocus="autobox_GotFocus"
                            TextChanged="autobox_TextChanged">
                <AutoSuggestBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding}"/>
                    </DataTemplate>
                </AutoSuggestBox.ItemTemplate>
            </AutoSuggestBox>

在C#代码添加类似代码,注意要用 Gotfocus事件和TextChaged事件(用来筛选)

 ObservableCollection<string> items = new ObservableCollection<string>() { "w1", "w2", "w3", "msmdms","我的","你要" };
        private void autobox_GotFocus(object sender, RoutedEventArgs e)
        {
            autobox.ItemsSource=items;//数据源items
        }

        private void autobox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
        {
            string change = sender.Text;
            autobox.ItemsSource = items.Where(s =>s.Contains(change));//筛选s, 如同数据库操作
        }

2、MessageDialog, ContentDialog的应用

(1)WP8.1中的messagebox变成了MessageDiaglog,用法是用C#代码调用,简单的调用程序如下:

private async void messageDialogButton_Click(object sender, RoutedEventArgs e)
{
    MessageDialog messageDialog = new MessageDialog("MessageBox --> MessageDialog", "MessageDialog");
    await messageDialog.ShowAsync();
}

(2)ContentDialog 则可以设置为部分或者全屏,或者直接在项目里新建一个 ContentDialog,其C#代码如下:

 private async void Button_Click_2(object sender, RoutedEventArgs e)
        {

            ContentDialog dialog=new ContentDialog(){
                Title="这是一个项目",
                Content="密匙",
                PrimaryButtonText="um1",
                SecondaryButtonText="um2"
            };
            dialog.FullSizeDesired = true;//设置全屏
            ContentDialogResult result=await dialog.ShowAsync();
            if (result == ContentDialogResult.Primary)
            {
                show.Content = "nonshow";
            }
            else if (result==ContentDialogResult.Secondary)
            {
                show.Content = "showagain";
            }
        }

3、Flyout应用

下面用Button 嵌入一个flyout,下面xaml代码如下:

<Button Name="show" Content="show">
                <Button.Flyout>
                    <Flyout>
                        <StackPanel>
                            <TextBlock Text="我的项目"/>
                            <Button Content="你好" Click="Button_Click_2"/>
                        </StackPanel>
                    </Flyout>
                </Button.Flyout>
            </Button>

还可以内嵌menuflyout,xaml代码如下:

 <Button Name="show" Content="show">
                <Button.Flyout>
                    <MenuFlyout>
                        <MenuFlyoutItem Text="123"/>
                        <MenuFlyoutItem Text="456" Click="showBt_Click"/>
                    </MenuFlyout>
                </Button.Flyout>
            </Button>

还可以用ListPickerFlyout 内嵌

 <Button Name="show" Content="show">
                <Button.Flyout>
                    <ListPickerFlyout ItemsSource="{Binding items}">
                        <ListPickerFlyout.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding}"/>
                            </DataTemplate>
                        </ListPickerFlyout.ItemTemplate>
                    </ListPickerFlyout>
                </Button.Flyout>
            </Button>

4、BottumAppBar

就是ApplicationBar ,xaml代码如下:

<Page.BottomAppBar>
    <CommandBar>
        <CommandBar.PrimaryCommands>
            <AppBarButton Icon="Accept" Label="Accept"/>
            <AppBarButton Icon="Cancel" Label="Cancel"/>
        </CommandBar.PrimaryCommands>
        <CommandBar.SecondaryCommands>
            <AppBarButton Icon="Help" Label="Help"/>
        </CommandBar.SecondaryCommands>
    </CommandBar>
</Page.BottomAppBar>

5、StatusBar

可以在设计页面隐藏起来,也可以用C#来设计它。

 private async void statusBt_Click(object sender, RoutedEventArgs e)
        {

            Windows.UI.ViewManagement.StatusBar statusbar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
            await statusbar.HideAsync();//隐藏

        }

6. Magic Number:10

在 8.0 时代,Magic Number 为 12,也就是间距最好都设为 12 的倍数,或者 6。

但到了 8.1,微软将 12 改成了 10。

以上内容大部分是参考http://www.cnblogs.com/xiaoshi3003/p/3739510.html 的。

----------------------------------------------------------------------------------------------------------------------------

总结

1、容器Panel Controls:

  Canvas, StackPanel, Grid…

2、文本控件Text Handling Controls:

  TextBlock、RichTextBlock、TextBox、PasswordBox、AutoSuggestBox...

3、按钮Buttun控件:

  ToggleButton、CheckBox、RadioButton、AppBarButton、AppBarToggleButton...

4、进度显示控件:

  ProgressRing、ProgressBar

5、一些好用的控件:

  DatePicker / TimePicker、Flyout(包括MenuFlyout、List Picker Flyouts、Date/TimePicker Flyouts、Generic Picker Flyouts)、ContentDialog

6、系统的UI:

  CommandBar、StatusBar、Soft Buttons(一些没有用)

注:RequestedTheme是可以设置空间及页面的主题的属性。

时间: 2024-08-18 17:38:52

WP8.1 Study4:WP8.1中控件集合应用的相关文章

Android中控件的宽高

1.在一个Relatitivelayout布局里用代码add一个独立的button布局,结果该button的宽高无效 则说明:Android中控件默认是没有宽高的,只有五大布局才能给其宽高,即在代码中要设置控件的宽高需要使用福控件的layoutparams 命名规则:layout_width 想通的:layout_gravity和gravity 2.直接在activity中setContentView里引用最外层为button的布局,则也有宽高 原因:android默认在最外层给添加了Frame

问题解决——MFC SDI程序 CFormView中控件随窗口缩放

从来都是做对话框程序,这次想做个SDI的程序,想着用一下带Robbin界面的office2007风格,就不用使用那些花钱的商业控件/UI库了. 如果你不想看我打的文字,可以直接拷走代码,自己声明上定义再略作修改就可以用了,不需做任何修改. -------------------------------小尾巴首次登场----------------------------------- SDI程序,是要缩放的,如果是往里输入文字的话,这倒没什么,但是这次我使用的是CFormView类,里面加了控件

使用脚本操作UpdatePanel中控件的问题

假设有一个脚本(用js或者jQuery等类似手段编写),为UpdatePanel中的一个普通的TextBox赋值.如果你以为这样写: <head runat="server">     <title>Test</title>     <script src="Scripts/jquery-2.0.0.js"></script>     <script>         $(function ()

设置项目中控件的样式:webconfig中system.web下的Pages节点

关于system.web下面的Pages节点的详细说明,MSDN上面有,看这里. 这个Pages节点下的theme属性可以设置项目中控件的样式,直接引用skin文件来设置样式,不用在每个页面中添加,可以保证页面风格的一致性: <pages theme= "defaultTheme" /> 关于theme的添加: 创建主题完毕之后,在App_Themes文件夹下创建自己的样式,pages里面就可以直接使用了. 当然,如果要在某个页面中添加自定义的样式,可以在aspx中指定pa

控件包含代码块(即 ),因此无法修改控件集合。

第一种: 在使用主题的时候出现 控件包含代码块(即 <% ... %>),因此无法修改控件集合错误,原来错误的原因是: 控件包含代码块(即 <% ... %>),因此无法修改控件集合. 将这些代码去掉,相应的功能在代码中实现即可.<%=.....%>造成这个错误的原因是:在<head runat="server"></head>里面,使用了类似这样的代码, 把Head中使用的<%=.....%>的脚本放到body中

form表单中控件较多,加载完成后切换页面都很慢的解决方法

form表单中控件较多,加载完成后点击都很慢,为什么?我一页面中form表单里面上百个控件(如input.select.radio.checkbox等),还有一些js脚本,加载速度还可以,都能全部显示完毕,但是点击一些事件(如切换tab.关闭模拟框,点击radio等)都非常慢,不知道为什么? 当我采用inprivate模式浏览时,以上动作都很快,但老用inprivate也麻烦,有何办法解决. 按理说form都在客户端显示完全了,其他操作都是客户端的操作阿应该不慢才对阿/. ------解决思路-

控件包含代码块(即 &lt;% ... %&gt;),因此无法修改控件集合

错误: “/”应用程序中的服务器错误. 控件包含代码块(即 <% ... %>),因此无法修改控件集合. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.Web.HttpException: 控件包含代码块(即 <% ... %>),因此无法修改控件集合. 源错误: 执行当前 Web 请求期间生成了未经处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的

C#中使用多线程访问Winform中控件的若干问题

我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题.然而我们并不能用传统方法来做这个问题,下面我将详细的介绍. 首先来看传统方法: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(Thread

selenium遍历控件集合

场景:需要重复增加地址栏信息,如果地址信息超过了5个就不开始增加 如图: 1.找到控件集合,在遍历每个子元素,在进行选择 1.先找到最外层的div的控件集合 2.外层的css定位为: int startSumAdress =driver.findElements(By.cssSelector("div#ship_addr_list > div.list")); 外层的地址集合列表 #集合 if(startSumAdress<5){ while (startSumAdress