ListBox控件

上一小节介绍的ComboBox控件在外观上仅显示当前选中的选项,通过单击此控件文本框才能看到其他选项,而ListBox控件能够以列表形式始终显示选项。在ListBox控件中可以添加多个ListBoxItem列表项来组成一个列表,允许用户在列表中选择一项或多项。

在XAML文件中,ListBox控件的用法如下所示:

<ListBox .../>

-或-

<ListBox ...>

<ListBoxItem><!--添加内容--></ListBoxItem>

</ListBox>

下面介绍一下ListBox控件的常用属性:

介绍完常用属性后,接着来看一下ListBox控件的常用事件:

  • SelectionChanged事件,在ListBox控件列表中当前选择项发生改变时触发。
  • DoubleTapped事件,双击ListBox控件列表中的选项时触发。

ListBox控件有一个常用方法SelectAll,在程序中调用SelectAll方法将选中ListBox控件列表中的所有选项。

下面使用ListBox控件设计一个在水果种类列表中选择水果的应用示例。

新建一个名为"ListBoxDemo"的Windows应用商店的空白应用程序项目,在MainPage.xaml文件的Grid元素中添加如下代码。

<ListBox HorizontalAlignment="Left" Name="FruitListBox" Height="133" Margin="564,125,0,0" SelectionChanged="FruitListBox_SelectionChanged" SelectionMode="Multiple" SelectedValuePath="Content" VerticalAlignment="Top" Width="100">

<ListBoxItem Content="苹果"/>

<ListBoxItem Content="香蕉"/>

<ListBoxItem Content="葡萄"/>

</ListBox>

<TextBlock Name="SelectedFruit" HorizontalAlignment="Left" Margin="725,138,0,0" TextWrapping="Wrap" FontSize="20" VerticalAlignment="Top" Height="89" Width="200"/>

<TextBlock HorizontalAlignment="Left" Margin="564,79,0,0" TextWrapping="Wrap" Text="水果种类:" FontSize="25" VerticalAlignment="Top" Height="28" Width="137"/>

在上面的代码中,添加了一个ListBox控件和两个TextBlock文本块,在ListBox控件中设置其SelectionMode属性值为"Multiple"以便可以在列表中选取多个选项,然后添加三个ListBoxItem列表项,内容分别为苹果、香蕉和葡萄。两个TextBlock文本块用于显示"水果种类:"和选择的水果信息。

打开项目中的MainPage.xaml.cs文件,为ListBox控件的SelectionChanged事件添加处理方法FruitListBox_SelectionChanged,在列表中选择列表项时会触发SelectionChanged事件,将选择的水果信息显示在SelectedFruit文本块中,代码如下所示:

private void FruitListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)

{

//定义一个string类型的变量showFruit用来保存所选择的水果

string showFruits = String.Empty;

//定义一个selectedFruit变量存储在列表中选择的水果信息

var selectedFruits = FruitListBox.SelectedItems;

//遍历selectedFruits变量中存储的水果信息并赋给showFruits变量

foreach (var fruitItems in selectedFruits)

{

ListBoxItem fruitItem = fruitItems as ListBoxItem;

showFruits += fruitItem.Content;

}

SelectedFruit.Text = "你选择了:" + showFruits;

}

在上面的代码中,首先定义一个string类型的变量showFruit用来保存所选择的水果内容,然后定义一个selectedFruits变量用于存储在列表中选择的水果信息集合,接着使用foreach遍历selectedFruits变量,将选择的列表项内容赋值给showFruits变量,最后在SelectedFruit文本块中显示选择信息。

运行程序,在界面上可以看到"水果种类:"文本信息和一个包含"苹果"、"香蕉"和"葡萄"选项的列表,效果如图4-9所示,选中列表中的"香蕉"和"葡萄"选项后,会在界面显示选择结果"你选择了:香蕉葡萄",效果如图4-10所示。


图4-9 ListBox控件的使用 图4-10 选择水果后显示所选内容

Win10系列:C#应用控件基础5的更多相关文章

  1. Win10系列:JavaScript 控件的使用

    向页面中添加的控件可分为两种类型:标准的HTML控件和WinJS库控件.其中标准的HTML控件是指HTML标准中定义的基本控件,如按钮和复选框:WinJS库控件是为开发基于JavaScript 的Wi ...

  2. WPF从我炫系列4---装饰控件的用法

    这一节的讲解中,我将为大家介绍WPF装饰控件的用法,主要为大家讲解一下几个控件的用法. ScrollViewer滚动条控件 Border边框控件 ViewBox自由缩放控件 1. ScrollView ...

  3. WPF 模仿 UltraEdit 文件查看器系列一 用户控件

    WPF 模仿 UltraEdit 文件查看器系列一 用户控件 运行环境:Win10 x64, NetFrameWork 4.8, 作者:乌龙哈里,日期:2019-05-10 章节: 起步 添加用户控件 ...

  4. C#控件系列--文本类控件

    C#控件系列--文本类控件         文本类控件主要包含Label.LinkLabel.Button.TextBox以及RichTextBox. Label 功能         Label用来 ...

  5. 重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree

    原文:重新想象 Windows 8 Store Apps (17) - 控件基础: Measure, Arrange, GeneralTransform, VisualTree [源码下载] 重新想象 ...

  6. 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试

    原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...

  7. WPF编游戏系列 之四 用户控件

    原文:WPF编游戏系列 之四 用户控件        在上一篇<WPF编游戏系列 之三 物品清单>中,对物品清单进行了演示,其中反复用到了同一组控件(如下图),而且 颜昌钢也指出在3.2. ...

  8. Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView、TTreeViewItem

    Delphi XE2 之 FireMonkey 入门(44) - 控件基础: TTreeView.TTreeViewItem TScrollBox -> TCustomTreeView -> ...

  9. Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid、TGrid

    Delphi XE2 之 FireMonkey 入门(43) - 控件基础: TStringGrid.TGrid TStringGrid.TGrid 都是从 TCustomGrid 继承; 区别有:1 ...

  10. Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox、TComboEdit

    Delphi XE2 之 FireMonkey 入门(42) - 控件基础: TComboBox.TComboEdit TListBox 有两个兄弟 TComboListBox.TComboEditL ...

随机推荐

  1. ZZNUOJ 2022 摩斯密码

    map打表存一下对应的密码   不会map感觉不好弄这题 #include<stdio.h> #include<string.h> #include<math.h> ...

  2. Teams UVA - 11609

    题意就不多说了这个小规律不算难,比较容易发现,就是让你求一个数n*2^(n-1):很好想只是代码实现起来还是有点小困(简)难(单)滴啦,一个快速幂就OK了: 代码: #include<stdio ...

  3. react面试问题总结

    1. 在生命周期中的哪一步你应该发起 AJAX 请求? 我们应当将AJAX 请求放到 componentDidMount 函数中执行,主要原因有下: 放到componentWillMount不好.  ...

  4. ionic toggle点击返回true/false支持自定义

    <ul class="list"> <li class="item item-toggle"> 手机提醒 <label class ...

  5. C#动态代理

    所谓代理,就是不直接访问目标对象,而是由中间对象生成一个目标代理类,由中间代理对象来代理目标对象的方法.Java里面有JDK和CGLIB代理.C#里面则使用Castle代理.nuget引用如下: &l ...

  6. (转)C# System.Diagnostics.Process.Start使用

    经常会遇到在Winform或是WPF中点击链接或按钮打开某个指定的网址, 或者是需要打开电脑中某个指定的硬盘分区及文件夹, 甚至是"控制面板"相关的东西, 如何做呢?  方法:使用 ...

  7. <山月记>:中岛敦 -选段

    因为害怕自己并非明珠而不敢刻苦琢磨,又因为有几分相信自己是明珠,而不能与瓦砾碌碌为伍,遂逐渐远离世间,疏避人群,结果在内心不断地用愤懑和羞怒饲育着自己懦弱的自尊心.世上每个人都是驯兽师,而那匹猛兽,就 ...

  8. Practical Vim 第一章 & 第二章

    第一章:Vim 解决问题的方式 前言 本质上讲,我们的工作是重复性的.凡是可以简化重复性操作的方式,都会成倍地节省我们的时间. Vim 对重复性操作进行了优化.它之所以能高效地重复,是因为它会记录我们 ...

  9. p2739 Shuttle Puzzle

    观察样例得知就是和离'_'左边最近的'w'交换位置,然后和离'_'右边最近的'b'交换位置,轮流进行. #include <iostream> #include <cstdio> ...

  10. yarn hadoop-2.3.0 installation cluster Centos 64bits

    Apache Hadoop -2.2.0 - How to Install a Three Nodes Cluster http://tonylixu.blogspot.ca/2014/02/apac ...