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 ...
随机推荐
- android平台的技术架构
Android平台采用了软件堆层(Software Stack)的架构,主要分为四个部分: 1.应用软件 Android 连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端.SMS短消 ...
- CSS重置代码和常用公共代码
发的发生的发生法士大夫撒打发士大夫
- hiho_1051_补提交卡
题目大意 给出1到100这100个数中的某些数字(各个数字不同),这些数字形成一个个间断的连续区间,向1-100中添加M个数字,使得添加后1-100中某连续区间的长度最大,求出添加M个数字后,最长的连 ...
- phalcon:model 事件与事件管理器
事件与事件管理器(Events and Events Manager)¶ Models allow you to implement events that will be thrown when p ...
- redis.conf详解
# Redis示例配置文件 # 注意单位问题:当需要设置内存大小的时候,可以使用类似1k.5GB.4M这样的常见格式: # # 1k => bytes # 1kb => bytes # 1 ...
- C#基础:泛型委托
泛型委托是委托的一种特殊形式,感觉看上去比较怪异,其实在使用的时候跟委托差不多,不过泛型委托更具有类型通用性. 就拿C#里最常见的委托EventHandler打比方.在.NET 2.0以前,也就是泛型 ...
- 扒一扒JavaScript 预解释
带var关键字预解释 让我们先看下这段代码执行的结果: 代码如下: alert(n);//弹出undefinedvar n = 10; 弹出的结果是undefined,为何不是10?让我们再看下面这段 ...
- [ssc] 数据库管理工具——SQuirreL SQL Client使用入门
简单介绍: SQuirrel SQL Client是一个用Java写的数据库客户端,用JDBC统一数据库访问接口以后,可以通过一个统一的用户界面来操作MySQL PostgreSQL MSSQL Or ...
- Spring配置文件解析--依赖注入
1.构造器注入基于构造器的DI通过调用带参数的构造器来实现,每个参数代表着一个依赖.此外,还可通过给stattic工厂方法传参数来构造bean.构造器参数解析根据参数类型进行匹配,如果bean的构造器 ...
- poj2284 That Nice Euler Circuit(欧拉公式)
题目链接:poj2284 That Nice Euler Circuit 欧拉公式:如果G是一个阶为n,边数为m且含有r个区域的连通平面图,则有恒等式:n-m+r=2. 欧拉公式的推广: 对于具有k( ...