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

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 离线

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),这样就可以取消选择所有的标签页。