2018-11-26-win10-UWP-Controls-by-function
阅读原文时间:2023年07月16日阅读:1

title

author

date

CreateTime

categories

win10 UWP Controls by function

lindexi

2018-11-26 20:0:6 +0800

2018-2-13 17:23:3 +0800

Win10 UWP

Windows的 XAML UI 框架提供了很多控件,支持用户界面开发库。
我现在做的一个中文版的,很多都是照着微软写,除了注释
我们先学微软做一个简单的frame,新建Page,里面放title和跳转页

public class page  
{  
    public page()  
    {

    }

    /// <summary>  
    /// 跳转页  
    /// </summary>  
    public Type navigate  
    {  
        set  
        {  
            \_navigate = value;  
        }  
        get  
        {  
            return \_navigate;  
        }  
    }

    /// <summary>  
    /// 页面名  
    /// </summary>  
    public string title  
    {  
        set  
        {  
            \_title = value;  
        }  
        get  
        {  
            return \_title;  
        }  
    }

    private Type \_navigate;  
    private string \_title;  
}

我们需要把所有页放到一个类,本来这个类可以不弄,直接放 Page 列表,使用索引,最后我还是想给宝资通打广告,所以弄了一个类,本来应该叫page管理器,于是现在修改为 baozitong 。

输入title返回type 也就是页面的 Type 可以用来跳转

   public static Type page(string title)  
   {  
       foreach (var temp in \_page)  
       {  
           if (temp.title == title)  
           {  
               return temp.navigate;  
           }  
       }  
       return null;  
   }  
   public static List<page> \_page  
   {  
       set;  
       get;  
   } = new List<page>()  
   {  
       new page()  
       {  
           title = "appbar",  
           navigate = typeof(appbar)  
       }  
   };

每次添加page可以在 baozitong._page 添加新的页面,通过 new page() 的方式添加

界面是一个简单的 splitview 请看代码

    <ToggleButton Grid.Row="0" IsChecked="{Binding ElementName=split,Path=IsPaneOpen,Mode=TwoWay}" FontFamily="Segoe MDL2 Assets" Content=""></ToggleButton>  
    <SplitView x:Name="split" Grid.Row="1" IsPaneOpen="True">  
        <SplitView.Pane>  
            <ListView ItemsSource="{x:Bind \_page}" SelectionChanged="nagivate">  
               <ListView.ItemTemplate>  
                   <DataTemplate>  
                       <TextBlock Text="{Binding title}"></TextBlock>  
                   </DataTemplate>  
               </ListView.ItemTemplate>  
            </ListView>  
        </SplitView.Pane>  
            <Frame x:Name="frame" ></Frame>  
    </SplitView>

    private void nagivate(object sender, SelectionChangedEventArgs e)  
    {  
        //跳转navigate  
        frame.Navigate(((sender as ListView).SelectedItem as page).navigate);  
    }

App bar

用于显示应用程序特定命令的工具栏。

App bar button

使用app bar风格按钮

一个简单的按钮

        <AppBarButton Label="按钮" HorizontalContentAlignment="Center"/>

我们可以加上内容

        <AppBarButton Label="按钮" HorizontalContentAlignment="Center">  
            <Grid Width="48" Height="48" Margin="0,-8,0,-4">  
                <SymbolIcon Symbol="Memo"/>  
                <TextBlock Text="内容" Margin="0,2,0,0" Style="{StaticResource CaptionTextBlockStyle}" HorizontalAlignment="Center"/>  
            </Grid>  
        </AppBarButton>

我们可以在按钮加浮出的效果

        <AppBarButton Icon="OpenWith" Label="浮出">  
            <AppBarButton.Flyout>  
                <MenuFlyout>  
                    <MenuFlyoutItem Text="林德熙"/>  
                    <MenuFlyoutItem Text="csdn"/>  
                    <MenuFlyoutSeparator></MenuFlyoutSeparator>  
                </MenuFlyout>  
            </AppBarButton.Flyout>  
        </AppBarButton>

运行代码可以看到下面的界面

App bar separator

命令栏中的命令组。

如果我们有很多按钮,我们可以使用 AppBarSeparator 进行分割

        <AppBarButton Content="林德熙"></AppBarButton>  
        <AppBarSeparator></AppBarSeparator>  
        <AppBarButton Content="csdn"></AppBarButton>

App bar toggle button

开关命名命令栏

Command bar

一种专门处理命令按钮栏按钮

我们把刚才的按钮放在<CommandBar>

    <CommandBar>  
        <AppBarButton Label="按钮" HorizontalContentAlignment="Center">  
            <Grid Width="48" Height="48" Margin="0,-8,0,-4">  
                <SymbolIcon Symbol="Memo"/>  
                <TextBlock Text="内容" Margin="0,2,0,0" Style="{StaticResource CaptionTextBlockStyle}" HorizontalAlignment="Center"/>  
            </Grid>  
        </AppBarButton>

        <AppBarButton Icon="OpenWith" Label="浮出">  
            <AppBarButton.Flyout>  
                <MenuFlyout>  
                    <MenuFlyoutItem Text="林德熙"/>  
                    <MenuFlyoutItem Text="csdn"/><!--博客没有授权红黑转载-->  
                    <MenuFlyoutSeparator></MenuFlyoutSeparator>  
                </MenuFlyout>  
            </AppBarButton.Flyout>  
        </AppBarButton>  
    </CommandBar>

我们也看到最后的按钮,如果有按钮不是常用的,就可以放在 SecondaryCommands 进行折叠

        <CommandBar.SecondaryCommands>  
            <AppBarButton Label="没有授权"/>  
            <AppBarButton Label="红黑转载"/>  
        </CommandBar.SecondaryCommands>

Button

响应用户输入和点击事件。

按钮点击可以使用X:Bind绑定 ViewModel 的方法

超链接

    <TextBlock HorizontalAlignment="Left" Margin="72,163,0,0" TextWrapping="Wrap"  VerticalAlignment="Top">  
       <Hyperlink NavigateUri="http://blog.csdn.net/lindexi\_gd"> 博客发在csdn </Hyperlink>,没有授权红黑转载,没有授权推酷转载  
    </TextBlock>

Repeat button

用户点击不停响应。

和 Button 不同的在于,用户按住 Repeat button 会不断触发点击的事件

Flip view

幻灯片播放

  <FlipView>  
        <Image Source="Assets/QQ截图20160328094421.png"></Image>  
        <Image Source="Assets/QQ截图20160328094435.png"></Image>  
  </FlipView>

更好看的效果请看 分享大麦UWP版本开发历程-01.响应式轮播顶部焦点图 - 大麦胖哥 - 博客园

Grid view

行列布局,可以水平滚动控件。

Items control

提供UI指定数据模板

List view

在一个列表上的项目的集合,可以垂直或水平滚动的控件

在演示如何使用之前,先创建一个 viewmodel 用来放数据

public class viewmodel : notify\_property  
{  
    public viewmodel()  
    {

    }  
}

如果绑定的属性列表需要在值发生添加的时候动态修改界面的列表,需要使用 ObservableCollection 获得通过win10 uwp 通知列表的方法

    public ObservableCollection<string> lindexi  
    {  
        set;  
        get;  
    } = new ObservableCollection<string>()  
    {  
        "林德熙",  
        "csdn"  
    };

在界面绑定 ViewModel 的属性

    <ListView ItemsSource="{x:Bind view.lindexi}">  
        <ListView.ItemTemplate>  
            <DataTemplate>  
                <TextBlock Text="{x:Bind }"></TextBlock>  
            </DataTemplate>  
        </ListView.ItemTemplate>  
    </ListView>

Calendar date picker

日历日期选择器

Calendar view

日程表,让用户选择日期

Time picker

用户选择一个时间

Flyout

这是浮出控件,简单的使用是用来显示一条消息

    <Button Margin="200,153,0,0" Content="请勿转载">  
        <Button.Flyout>  
            <Flyout>  
                <StackPanel>  
                    <TextBlock Text="http://blog.csdn.net/lindexi\_gd"/>  
                </StackPanel>  
            </Flyout>  
        </Button.Flyout>  
    </Button>

暂时显示命令或列出选项给用户选择

        <AppBarButton Icon="OpenWith" Label="浮出">  
            <AppBarButton.Flyout>  
                <MenuFlyout>  
                    <MenuFlyoutItem Text="林德熙"/>  
                    <MenuFlyoutItem Text="csdn"/>  
                    <MenuFlyoutSeparator></MenuFlyoutSeparator>  
                </MenuFlyout>  
            </AppBarButton.Flyout>  
        </AppBarButton>

弹出自己写的菜单

Tooltip

提示,使用方法和 Flyout 差不多