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();//隐藏 }

使用它的progress inditator, C#代码如下:

 private async void statusBt_Click(object sender, RoutedEventArgs e)
{ Windows.UI.ViewManagement.StatusBar statusbar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
// await statusbar.HideAsync();
statusbar.BackgroundColor = Colors.White;
statusbar.ForegroundColor = Colors.Blue;
var progress = statusbar.ProgressIndicator;//获取状态栏的指示器
progress.Text = "连接中";
await progress.ShowAsync(); }

6、ListBox及Listview

ListView继承于ListBox,详细的可以查阅相关文档。下面用例子介绍ListView。

在Page.xaml代码中

<ListView Name="view1" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.IsScrollInertiaEnabled="True"
Height=""
SelectionChanged="view1_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate> <StackPanel Orientation="Horizontal">
<TextBlock Style="{ThemeResource ListViewItemContentTextBlockStyle}" Text="{Binding Path=Id}" Width="" TextAlignment="Left"/>
<TextBlock Style="{ThemeResource ListViewItemContentTextBlockStyle}" Text="{Binding Path=Name}" Width="" TextAlignment="Left"/>
</StackPanel> </DataTemplate>
</ListView.ItemTemplate>
</ListView>

在Page.xaml.cs中SelectionChanged()事件和Datading 部分代码如下:

 private async void view1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string str = "";
foreach (var item in e.AddedItems)
{
str = (item as School).Id + (item as School).Name;
}
MessageDialog diolog = new MessageDialog(str);
await diolog.ShowAsync();
}
...
ObservableCollection<School> school = new ObservableCollection<School>()
{
new School{Id=,Name="华农"},
new School{Id=,Name="华工"},
new School{Id=,Name="华农"},
};
view1.ItemsSource = school; public class School
{
private string name;
private int id; public string Name
{
get { return name; }
set { name = value; }
}
public int Id
{
get { return id; }
set { id = value; }
}
}

7. 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是可以设置空间及页面的主题的属性。

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

  1. 控件包含代码块(即 <% ... %>),因此无法修改控件集合

    错误: “/”应用程序中的服务器错误. 控件包含代码块(即 <% ... %>),因此无法修改控件集合. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解 ...

  2. C#中控件数组的讨论

    VB用得习惯后,到C#中来觉得很奇怪,如此好的控件数组怎么不见了.“众所周知,控件数组最主要的两个优点:可以循环附值:可以响应同一个事件.从而大大简化了代码.引自http://wenku.baidu. ...

  3. WPF 中获取DataGrid 模板列中控件的对像

    WPF 中获取DataGrid 模板列中控件的对像 #region 当前选定行的TextBox获得焦点 /// <summary> /// 当前选定行的TextBox获得焦点 /// &l ...

  4. Metro中控件WebView访问外部的网页显示一片空白

    Metro中控件WebView访问外部的网页显示一片空白 解决方案: ​下载安装了Initex.Software.Proxifier.v3.21.Standard.Edition.Incl.Keyma ...

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

    form表单中控件较多,加载完成后点击都很慢,为什么?我一页面中form表单里面上百个控件(如input.select.radio.checkbox等),还有一些js脚本,加载速度还可以,都能全部显示 ...

  6. selenium遍历控件集合

    场景:需要重复增加地址栏信息,如果地址信息超过了5个就不开始增加 如图: 1.找到控件集合,在遍历每个子元素,在进行选择 1.先找到最外层的div的控件集合 2.外层的css定位为: int star ...

  7. C#中控件的CheckState和Checked属性区别?

    Checked 和CheckState都是检查控件选中状态,都能判断是否选中控件. 只是Checked 通过布尔判断(true & false): CheckState 通过枚举判断. che ...

  8. duilib中控件拖拽功能的实现方法(附源码)

    转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41144283 duilib库中原本没有显示的对控件增加拖拽的功能,而实际 ...

  9. MFC中控件的TAB顺序 ----转载

    在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...

随机推荐

  1. volley超时和重复请求问题

    原文:  Android Volley double post when have slow request I have a problem with Volley POST request on ...

  2. 20160816_Redis一些资料

    1.官网 http://redis.io/ 2.一个教程 http://www.yiibai.com/redis/redis_quick_guide.html 3.快速开始指南(Quick Start ...

  3. 微信jssdk

    http://203.195.235.76/jssdk/?from=timeline&isappinstalled=0

  4. 第三章 Python容器:列表、元组、字典与集合

      数据结构的分类依据?基本的"数组"在python中是列表, 数据结构的作用?容器,盛放数据,是由原子组成的分子.可以将一群数据进行整合.拆分.重排. 3.2 列表 列表是啥?顺 ...

  5. 年轻人你活着不是为了看K线!

    年轻人你活着不是为了看K线!   在网上看到一篇文章,写得还不错,转给大家看一下,内容如下: 这篇文章本来是该几年前写的,奉劝大家不要去玩股票.因为那个时候我的<中国崛起的经济学分析>这本 ...

  6. VB6 GDI+ 入门教程[3] 笔、刷子、矩形、椭圆绘制

    http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[3] 笔.刷子.矩形.椭圆绘制 2009 年 6 月 1 ...

  7. EF Core » 关系

    对初学者理解关系很有用,先留下来,有时间边看边翻译. Caution 注意 This documentation is for EF Core. For EF6.x and earlier relea ...

  8. 【转】 STL中的set容器的一点总结

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  9. as3中的多线程

    从fp11.4开始支持worker技术, 即as3中的线程概念, 到了fp11.5, flascc中开始支持pthread家族来创建线程. 总的来说, as3中有两种创建线程的方法: 1.直接在as3 ...

  10. jmeter 远程测试

    如果你的JMeter客户机不能进行属性,来模拟 足够的用户强调您的服务器或在网络水平是有限的,存在一个选项来控制多个远程JMeter 引擎从一个JMeter客户机. 通过运行JMeter远程,你可以复 ...