惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 离线

Arduino语法详解_含示例详解 用C#实现的几种常用数据校验方法整理(CRC校验;LRC校验;BCC校验;累加和校验) C#设计模式 ---- 总结汇总(转载) 压缩包Zip格式详析(全网最详细) MQTT介绍 mDNS知识 转(zip文件格式说明) 学习笔记 彻底明白Zigbee术语——群集(Cluster)、端点(EndPoint)等 转载:IconFont(矢量图标字体)在Winform中的应用 C# 使用OLEDB 读不出 Excel 参数配置说明 Excel 12.0; HDR=Yes; IMEX=1;READONLY=1 ESA SNAP中超分模块处理Sentinel-2数据效果图 Windows 下安装 RabbitMQ服务异常 安装RabbitMQ时出现Plugin configuration unchanged,RabbitMQ服务启动几秒后自动关闭, http://127.0.0.1:15672/页面无法访问一并解答 windows10环境下的RabbitMQ安装步骤(图文) .NET Core 微服务架构学习与实践系列文章目录 .Net 微服务架构技术栈的那些事 Newtonsoft.Json高级用法 MVVM处理TreeView的SelectedItem的绑定的两种方式
WPF:选择器(selector)
离线 · 2021-11-17 · via 博客园 - 离线
  • 不但可以被索引而且可以被选择。
  • Selector 抽象类继承自ItemsControl。
  • SelectedIndex——非负的整型数,它表示哪个Item 被选择了,如果没有东西被选择,则用1 表示。Item是根据被添加到集合中的顺序来计数的。
  • SelectedItem——当前被选中的Item 的实例。
  • SelectedValue——当前被选中的Item 的值。默认情况下这个值是Item 本身,这时Selec- tedValue 与SelectedItem 是一样的。通过设置SelectedValuePath 去选择任意的属性或者表达式,用来表示每个Item 的值(SelectedValuePath 与DisplayMemberPath 工作原理一样)。
  • IsSelected——可以用来判断选择或者未被选择的Boolean 变量 (也可以用来获得当前选择的状态)。
  • IsSelectionActive—— 说明选择的Item 是否拥有焦点的Boolean 变量。
  • 定义了SelectionChanced 事件,它会监听当前选择内容是否被改变。

继承自Selector 的控件:ComboBox、ListBox、ListView、TabControl

1、ComboBox

  • 允许用户从一个列表中选择一个Item。
  • 下拉框可以使用鼠标点击或者Alt+Up、Alt+Down、F4 键来打开和关闭。
  • 定义了两个事件:DropDownOpened 和DropDownClosed,以及一个IsDropDownOpen 属性,它们允许你在下拉框被打开或者关闭时进行操作。IsDropDownOpen 是一个可读写属性,所以可以设置它来改变下拉框的状态。
  • ComboBox 允许用户在选择框里输入任何文字。
  • 把IsEditable 设置为true 就等于把ComboBox 的选择框变为一个文本框。当选择框是一个文本框时,被选择的Item 只能以简单字符串来显示。
  • 默认情况下,把IsEditable 设置为true,则以ToString 方式渲染选择框。
  • TextSearch.TextPath 属性能被附加到ComboBox 上,把每个项的属性(或者子属性)作为选择框的文字使用。
  • TextSearch 的另一个附加属性是Text 属性,它更加灵活。但是必须被应用到ComboBox 的某个Item 上。可以在选择框内把每一个项的Text 设置为想显示的文字。如附件
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ComboBox Width="206" IsEditable="True">
        <!-- Item #1 -->
        <StackPanel TextSearch.Text="Text1"  Orientation="Horizontal" Margin="5">
            <Image Source="CurtainCall.bmp"/>
            <StackPanel Width="200">
                <TextBlock Margin="5,0" FontSize="14" FontWeight="Bold"
        VerticalAlignment="center">Curtain Call</TextBlock>
                <TextBlock Margin="5" VerticalAlignment="center" TextWrapping="Wrap">
          Whimsical, with a red curtain background that represents a stage.
                </TextBlock>
            </StackPanel>
        </StackPanel>
        <!-- Item #2 -->
        <StackPanel TextSearch.Text="text2" Orientation="Horizontal" Margin="5">
            <Image Source="Fireworks.bmp"/>
            <StackPanel Width="200">
                <TextBlock Margin="5,0" FontSize="14" FontWeight="Bold"
        VerticalAlignment="center">Fireworks</TextBlock>
                <TextBlock Margin="5" VerticalAlignment="center" TextWrapping="Wrap">
          Sleek, with a black sky containing fireworks. When you need to
          celebrate PowerPoint-style, this design is for you!
                </TextBlock>
            </StackPanel>
        </StackPanel>
 
    </ComboBox>
</Canvas>
  • SelectionChanged 事件:传给事件处理程序的SelectionChangedEventArgs 类型有两个IList 类型的属性:AddedItems 和
    RemovedItems。AddedItems 包含新的选择,而RemovedItems 包含老的选择。
  • ComboBoxItem:ComboBoxItem 是一个内容控件。ComboBoxItem 提供了一些有用的属性(IsSelected 与IsHighlighted)和一些有用的事件(Selected 与Unselected)。

2、ListBox

  • ListBox 所有的项都直接在控件的边界以内显示(如果它们没有都被显示的话,也可以用滚动条去查看没有显示出来的项)。
  • 对于同时发生的选择操作的支持。通过SelectionMode 属性可以控制这个特性,这个属性接受3 个值(来自于SelectionMode 枚举):
    ·Single(默认)——一次只能选择一项,就像ComboBox 一样。
    ·Mulle——可以同时选择任何数目的项,点击一个未选中的项将把它添加到ListBox 的Sel- ectedItems集合,而点击一个选中的项会把它从集合里移除。
    ·Extended——任何数量的项可以被同时选中,但是这一行为是为单选情况所优化的。如果在这种模式下选择多个项,点击的时候必须按住Shift (连续的项)或者Ctrl(不连续的项)。该行为和Win32 ListBox控件一样。
  • ListBoxItem:定义了IsSelected 属性以及Selected/Unselected 事件。
  • TextSearch 技术
  • 使ListBox 平稳地滚动:把ListBox 上的ScrollViewer.CanContentScroll 附加属性设为false,同时会失去ListBox 的虚拟化(Virtualizat ion)功能。可能对数据绑定的性能产生负面影响。
  • 在一个ListBox(或者其他的ItemControl)中排序:可以通过ItemsCollection 对象上的一种机制来完成排序,所以它也可以应用在所有ItemsControl 上。ItemsCollection 有一个SortDescriptions 属性能保存任何数量的System.- ComponentModel.SortDescription 实例。每个SortDescription 描述哪一个属性应该被用来排序,是升序还是降序。

3、ListView

  • 从ListBox 继承而来。
  • ListView 添加一个叫作View 的属性,它允许你把视图定义为比选择一个自定义的ItemsPanel 更丰富的样子。
  • View 属性是ViewBase 类型,它是个抽象类。。WPF 有一个具体子类(concrete subclass),名字叫GridView,它和资源管理器的详细视图非常类似。自动支持一些资源管理器中详细视图(Detail view)的高级特性:
    ·通过拖拉列对列重新排序。
    ·拖动列的分隔器(separator)可以改变列尺寸。
    ·通过双击列的分隔器后,GridView 会根据当前内容来自动调整列尺寸。

4、TabControl

  • 它可以在多个页面之间进行切换。
  • 通过使用TabControl 的TabStripPlacement 属性(Dock 类型),可以把它的位置设为左边、右边或者下边。
  • TabItem:
  • TabControl 的第1 个项默认是被选中的。你也可以用编程的方式把SelectedItem 设为null(或者把SelectedIndex 设置为1),这样就可以取消选择所有的标签页。