title author date CreateTime categories
WPF ListBox 的选择
lindexi
2019-01-25 21:43:17 +0800
2018-2-13 17:23:3 +0800
WPF

本文告诉大家在 ListBox 做选择时,多选时 SelectedItem 和 SelectedIndex 的值。

首先写一个界面,两个按钮和一个ListBox ,点击第一个按钮选择多个元素,点击第二个按钮就显示当前的 SelectedItem 和 SelectedIndex

  1. <Grid>
  2. <ListBox x:Name="QjdckjpVemnepybg" SelectionMode="Multiple"></ListBox>
  3. <Button Width="100" Height="100" Click="ButtonBase_OnClick"></Button>
  4. <Button Margin="100,10,10,10" Width="100" Height="100" Click="RyltnqiUmqgwuz_OnClick"></Button>
  5. </Grid>

在点击前需要给 ListBox 数据,请看下面

  1. public MainWindow()
  2. {
  3. InitializeComponent();
  4. QjdckjpVemnepybg.ItemsSource = FyuzbqklBxdk;
  5.  
  6. for (int i = 0; i < 100; i++)
  7. {
  8. FyuzbqklBxdk.Add(i.ToString());
  9. }
  10. }
  11.  
  12. public ObservableCollection<string> FyuzbqklBxdk { get; } = new ObservableCollection<string>();

点击第一个按钮选择多个元素

  1. private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
  2. {
  3. QjdckjpVemnepybg.SelectedItems.Clear();
  4. QjdckjpVemnepybg.SelectedItems.Add(FyuzbqklBxdk[2]);
  5. QjdckjpVemnepybg.SelectedItems.Add(FyuzbqklBxdk[5]);
  6. }

点击第二个按钮显示 SelectedItem 和 SelectedIndex

  1. private void RyltnqiUmqgwuz_OnClick(object sender, RoutedEventArgs e)
  2. {
  3. Console.WriteLine(QjdckjpVemnepybg.SelectedItem);
  4. Console.WriteLine(QjdckjpVemnepybg.SelectedIndex);
  5. }

可以看到,点击第一个按钮之后,SelectedItem 和 SelectedIndex 都是 2 因为他会显示多选的第一个。

如果选择的是 SelectedItem ,那么 SelectedItems 就只有 SelectedItem 的元素

  1. private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
  2. {
  3. QjdckjpVemnepybg.SelectedItem = FyuzbqklBxdk[2];
  4. }
  5.  
  6. private void RyltnqiUmqgwuz_OnClick(object sender, RoutedEventArgs e)
  7. {
  8. Console.WriteLine(QjdckjpVemnepybg.SelectedItems.Count);
  9. foreach (var temp in QjdckjpVemnepybg.SelectedItems)
  10. {
  11. Console.WriteLine(temp);
  12. }
  13. }

如果选择是 SelectedIndex ,那么 SelectedItems 有对应序号的元素

  1. private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
  2. {
  3. QjdckjpVemnepybg.SelectedIndex = 2;
  4. }
  5.  
  6. private void RyltnqiUmqgwuz_OnClick(object sender, RoutedEventArgs e)
  7. {
  8. Console.WriteLine(QjdckjpVemnepybg.SelectedItems.Count);
  9. foreach (var temp in QjdckjpVemnepybg.SelectedItems)
  10. {
  11. Console.WriteLine(temp);
  12. }
  13. }

如果这时 SelectedIndex 为 -1 ,那么 SelectedItems 没有选择元素

  1. private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
  2. {
  3. QjdckjpVemnepybg.SelectedIndex = -1;
  4. }
  5.  
  6. private void RyltnqiUmqgwuz_OnClick(object sender, RoutedEventArgs e)
  7. {
  8. Console.WriteLine(QjdckjpVemnepybg.SelectedItems.Count);
  9. foreach (var temp in QjdckjpVemnepybg.SelectedItems)
  10. {
  11. Console.WriteLine(temp);
  12. }
  13. }

如果这时的 SelectedItems 没有选择元素,那么 SelectedIndex 是 -1

如果这时没有开启多选,那么在 SelectedItem 选中元素时,SelectedItems 只有他选中的。所以一般可以通过 SelectedItems 判断当前选中的。

2019-1-25-WPF-ListBox-的选择的更多相关文章

  1. 自定义WPF ListBox的选择样式

    (下图:进行多项选择的ListBox) 首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的,SystemColors的HighlightBr ...

  2. wpf ListBox删除选择项(支持多项)

    搞了个ListBox删除选择项,开始老是不能把选择项删除干净,剩下几个.后来调试一下原来是ListBox在删除一个选择项之后立即更新,选择项也有变化.结果我想了个这样的方法来删除呵呵. Departm ...

  3. WPF:自定义ListBox的选择样式

    首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的, SystemColors的HighlightBrushKey和HighlightTex ...

  4. 自定义WPF ListBox的选中项样式

    首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的,SystemColors的HighlightBrushKey和HighlightText ...

  5. WPF ListBox数据绑定

    本文来源 http://wshoufeng1989.blog.163.com/blog/static/202047033201282911633670/  风随影动的博客 使用数据库AllData , ...

  6. [2019.03.25]Linux中的查找

    TMUX天下第一 全世界所有用CLI Linux的人都应该用TMUX,我爱它! ======================== 以下是正文 ======================== Linu ...

  7. Alpha冲刺(2/10)——2019.4.25

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(2/10)--2019.4.25 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  8. WPF : ListBox的几种Template属性

    原文:WPF : ListBox的几种Template属性 属性名 属性的类名 功能 示例 Template ControlTemplate 定义控件自身的外观.其子元素的布局可以自定义,也可以由It ...

  9. WPF中如何选择合适的元数据标记?(英文)

    原文:WPF中如何选择合适的元数据标记?(英文) FrameworkPropertyMetadataOptions Enumeration:Specifies the types of framewo ...

  10. wpf listbox 选中项 上移下移

    原文:wpf listbox 选中项 上移下移 private void MoveUp_Click(object sender, RoutedEventArgs e)         {        ...

随机推荐

  1. Python获取exe文件版本

    import time, datetime, re, subprocess, sys, os, win32net, win32api, win32con, win32netcon, win32secu ...

  2. git-win10下安装ubuntu,双系统,免U盘

    关键词:win10,ubuntu,双系统,免, U盘 1-6,8 参考:https://www.jianshu.com/p/417c1001a5597 参考: https://segmentfault ...

  3. vue项目中router路由配置

    介绍 路由:控制组件之间的跳转,不会实现请求.不用页面刷新,直接跳转-切换组件>>> 安装 本地环境安装路由插件vue-router:    cnpm install vue-rou ...

  4. 【leetcode】1090. Largest Values From Labels

    题目如下: We have a set of items: the i-th item has value values[i] and label labels[i]. Then, we choose ...

  5. [CF1182F]Maximum Sine

    题意:\(f(x) = \text{abs}(\text{sin}(\frac{p}{q} \pi x))\),给定\(a,b,p,q\),求\(x\in[a,b]\)最大的\(f(x)\). 题解: ...

  6. "C++ Primer Plus" is WAY FUCKING BETTER than "C++ Primer" (For Beginners)!!!

    再看到给初学C++的人推荐C++ Primer的我就要揍人了,真的! 被他妈这帮装逼犯给误导了,耽误了无数的功夫! 就是听这帮傻逼的谣言,说C++ Primer讲解更深入什么的,初学也应该啃这本书,老 ...

  7. BUUCTF | [RoarCTF 2019]Easy Calc

    看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content" ...

  8. linux中awk 详解

    一.awk简介 awk是一个非常好用的数据处理工具,相对于sed常常作用于一整个行的处理,awk则比较倾向于一行当中分成数个[字段]处理,因此,awk相当适合处理小型的数据数据处理.awk是一种报表生 ...

  9. Java多线程,实现卖电影票的业务

    本篇重点:多线程共享资源时发生的互斥问题 一般的我们售卖电影票或者火车票时会有多个窗口同时买票, 我们来看测试代码:主方法new一个Ticket(一个堆),之后三个线程来启动(三个窗口买票) clas ...

  10. 1208C Magic Grid

    题目大意 给你一个n 让你用0~n^2-1的数填满一个n*n的正方形 满足每个数值出现一次且每行每列的异或值相等 输出任意一种方案 分析 我们发现对于4*4的正方形 0  1  2  3 4  5  ...