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();//隐藏 }
使用它的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中控件集合应用的更多相关文章
- 控件包含代码块(即 <% ... %>),因此无法修改控件集合
错误: “/”应用程序中的服务器错误. 控件包含代码块(即 <% ... %>),因此无法修改控件集合. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解 ...
- C#中控件数组的讨论
VB用得习惯后,到C#中来觉得很奇怪,如此好的控件数组怎么不见了.“众所周知,控件数组最主要的两个优点:可以循环附值:可以响应同一个事件.从而大大简化了代码.引自http://wenku.baidu. ...
- WPF 中获取DataGrid 模板列中控件的对像
WPF 中获取DataGrid 模板列中控件的对像 #region 当前选定行的TextBox获得焦点 /// <summary> /// 当前选定行的TextBox获得焦点 /// &l ...
- Metro中控件WebView访问外部的网页显示一片空白
Metro中控件WebView访问外部的网页显示一片空白 解决方案: 下载安装了Initex.Software.Proxifier.v3.21.Standard.Edition.Incl.Keyma ...
- form表单中控件较多,加载完成后切换页面都很慢的解决方法
form表单中控件较多,加载完成后点击都很慢,为什么?我一页面中form表单里面上百个控件(如input.select.radio.checkbox等),还有一些js脚本,加载速度还可以,都能全部显示 ...
- selenium遍历控件集合
场景:需要重复增加地址栏信息,如果地址信息超过了5个就不开始增加 如图: 1.找到控件集合,在遍历每个子元素,在进行选择 1.先找到最外层的div的控件集合 2.外层的css定位为: int star ...
- C#中控件的CheckState和Checked属性区别?
Checked 和CheckState都是检查控件选中状态,都能判断是否选中控件. 只是Checked 通过布尔判断(true & false): CheckState 通过枚举判断. che ...
- duilib中控件拖拽功能的实现方法(附源码)
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41144283 duilib库中原本没有显示的对控件增加拖拽的功能,而实际 ...
- MFC中控件的TAB顺序 ----转载
在MFC中添加控件后,按Ctrl+d可以改变控件TAB顺序,怕自己忘了,一个神奇的东西,记下. 关于改变Tab顺序的方法有以下几种: 方法一:在动态创建控件的时候STYLE设置成为WS_CHILD|W ...
随机推荐
- JAVA学习提高之----安装多个JDK版本的问题
我的机器上最开始安装的是jdk1.6,后来因为工作需要又安装了jdk1.4.但是,环境变量我并未更改,还是指向jdk1.6的路径的.可是,在cmd窗口输入 Java -version 却得到是1.4. ...
- python语法笔记(三)
1. 动态类型 python的变量不需要声明,在赋值时,变量可以赋值为任意的值.这和Python的动态类型语言相关. python对象是存在于内存中的实体,代码中写对象名,只是指向该对象的引用.引用和 ...
- eclipse+adt+sdk开发环境搭配
1.开发环境配置 http://www.mamicode.com/info-detail-516839.html
- mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询
有字段,a,b: a存的是:2016-10-10 b存的是:10:15:30 mysql将字段合并: concat(a, ' - ', b) 或者 concat(a, ' ', b) 字符时间转时间 ...
- linux下创建管理员组 使用 su - 命令
通常情况下,用户通过执行“su -”命令.输入正确的root密码,可以登录为root用户来对系统进行管理员级别的配置.但是,为了更进一步加强系统的安全性,有必要建立一个管理员的组,只允许这个组的用户来 ...
- 生物信息 perl 脚本实战
索引 1.统计fasta.fa和fastq文件的长度,统计fastq的reads个数,单个reads长度,reads总长度:统计fasta文件中contig的个数,列出名称,单条的长度,以及总长度. ...
- [转]Android 使用Fragment界面向下跳转并一级级返回
1.首先贴上项目结构图: 2.先添加一个接口文件BackHandledInterface.java,定义一个setSelectedFragment方法用于设置当前加载的Fragment在栈顶,主界 ...
- 能源项目xml文件 -- springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- JQUERY学习(贰)
一.操作一组jQuery对象 1.遍历 $("").each(fun); 2.求长度:length size() 3.获得某一个jQuery对象 $("") ...
- bfs 胜利大逃亡
http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目: Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一 ...