`
joking0ne
  • 浏览: 9420 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

WPF多条目控件

阅读更多

多条目空见可以用来显示任意多项数据。所有的多条目恐惧都派生自虚类ItemsControl.

       首先,该类定义了Items属性,任何派生自Object类型的实例都可添加到该属性中。Items是一个只读属性,该属性只支持通过添加、删除等操作控制器其包含的元素,而不能通过该属性进行设置。完成指定多条目控件所包含的所有元素这一功能的是ItemSource属性,而该属性的之一用途是对绑定进行支持。在设置了Items属性所包含的各个项目之后,WPF将不再允许后台代码对ItemSource属性进行设置;同样,在后台代码对ItemSource属性进行设置后,Items属性页不再允许被更改。

       HasItems属性标识当前实例的Items属性是否包含任何元素。

       ItemsControl对Items属性中包含的各个数据的显示是通过一个继承了ICollectionView接口的实例来实现的。通常情况下,开发人员可是有CollectionViewSource类的静态函数GetDefaultView来获得所带入的参数的默认显示类。

ICollectionView view=CollectionViewSource.getDefaultView(DataContext);
object item=view.CurrentItem;

 

       为完成各项显示效果,多条目空间还定义了ItemContainerStyle、ItemContainerStyleSelector、、ItemTemplate、ItemTemplateSelector属性。绘制过程如下:

  1. 首先,在WPF生成多条目控件的外观之前,系统向ItemContainerGenerator中记载的实例发出一个生成承载多条目控件所使用的容器的请求。
  2. 如果多条目控件在生成这一容器以前已经设置了ItemTemplate属性,则WPF将该属性记录的模板置入容器的ContentTemplate中;
  3. wPF根据控件的类型决定生成容器的类型,如TreeView控件生成的容器就是TreeViewItem。
  4. 由于各个容器都派生自ContentControl,因此WPF根据前述ContentControl类的外观生成步骤为容器生成最终外观。

       对ItemControl的显示精细控制的还有DisplayMemberPath属性,该属性设置了ItemControl岁各个子项所显示的属性的名称。

<ListBox DisplayMemberPath="Name">
      <Button Name="Button"/>
      <Label Name="Label"/>
    </ListBox>
<!--等价于-->
<Grid.Resources>
      <DataTemplate x:Key="itemTemplate">
        <TextBlock Text="{Binding Path=Name}"/>
      </DataTemplate>
    </Grid.Resources>
    <ListBox ItemTemplate="{StaticResource itemTemplate}">
      <Button Name="Button"/>
      <Label Name="Label"/>
    </ListBox>

 ==================================================================================

选项控件 Selector:

 

ComboBox从Selector派生后有添加了IsDropDownOpen属性,控制组合框的下拉列表的开闭。下拉列表的开闭触发事件DropDownOpened和DropDownClosed。MaxDropDownHeight设置下拉列表的高度;IsSelectionBoxHighlighted被选中选项高亮;IsEditable是否可编辑,true使显示的只能是字符串,复杂元素需要通过设置TextSearch.TextPath的复杂属性设定;isReadOnly false时接受更改,可编辑;StayOpenOnEdit true 下拉列表保持打开,并根据输入结果对选项进行匹配。

<Grid>
       <!--TextSearch.TextPath="Children[0].Name"表示选中某项时,显示其第一个子元素的Name属性-->
       <ComboBox Height="20" Width="100" IsEditable="True" TextSearch.TextPath="Children[0].Name" SelectedIndex="0">
      <!--Item1-->
      <StackPanel Orientation="Horizontal" Margin="1">
        <Image Width="16" Height="16" Source="Images/warning.bmp" Name="image1"/><!--选中后,编辑框显示image1-->
        <TextBlock Height="16" Text="This is item1"/>
      </StackPanel>
      <!--Item2-->
      <StackPanel Orientation="Horizontal" Margin="1">
        <Image Width="16" Height="16" Source="Images/warning.bmp"/><!--选中后,显示为空-->
        <TextBlock Height="16" Text="This is item2"/>
      </StackPanel>
      <!--Item3-->
      <Image Width="16" Height="16" Source="Images/warning.bmp"/><!--选中后,显示为空-->
      <!--Item4-->
      <Image Width="16" Height="16" Source="Images/warning.bmp" TextSearch.Text="Image4"/><!--选中后,显示为Image4,因为TextSearch.Text设置了-->
      <!--Item5-->
      <StackPanel Orientation="Horizontal" Margin="1">
        <Image Width="16" Height="16" Source="Images/warning.bmp" TextSearch.Text="Image5"/> <!--选中后,显示为空,因为TextSearch.Text的设置不在根节点-->
        <TextBlock Height="16" Text="This is item5"/>
      </StackPanel>
    </ComboBox>
  </Grid>

 下拉列表中的选项也可由ComboBoxItem封装,一下声明等价

      <StackPanel Orientation="Horizontal" Margin="1">
        <Image Width="16" Height="16" Source="Images/warning.bmp" Name="image1"/><!--选中后,编辑框显示image1-->
        <TextBlock Height="16" Text="This is item1"/>
      </StackPanel>

<ComboBoxItem>
                <StackPanel Orientation="Horizontal" Margin="1">
                    <Image Width="16" Height="16" Source="Images/warning.bmp" Name="image1"/>
                    <!--选中后,编辑框显示image1-->
                    <TextBlock Height="16" Text="This is item1"/>
                </StackPanel>
            </ComboBoxItem>

 

 =======================================================================

ListBox对包含的项直接显示,选项组成与ComboBox相同。具有SelectedItems和SelectionMode属性:SelectedItems是一个集合,可包含多项内容。SelectionMode取值有三种:Single——单选;Multiple——多选,点击已选项取消选中,点击未选项则选中;Extended——(多选)按下Shift/Ctrl单击,将选项添加到选中项集合中。

=========================================================================

TabControl

TabScriptPlacement控制Tab标签所在方向,取值为Bottom、Left、Right、Top(默认);SelectedContent和SelectedItem更新不同步

==========================================================================

LIstView / Menu /ToolBar 

 

分享到:
评论

相关推荐

    wpf 后台添加控件(多个)

    本教程将基于标题“wpf 后台添加控件(多个)”和描述中的内容,详细介绍如何在WPF应用的后台代码中动态地添加多个控件,并实现滚动条效果。 首先,我们要理解WPF中的控件创建。在XAML中,我们通常静态地定义界面...

    一个自定义的WPF进度条控件

    本案例中,我们关注的是一个结合了进度条和遮罩层的自定义控件,这在很多应用程序中非常实用,比如在进行长时间操作时提供用户反馈,或者在加载数据或页面时提供一种视觉上的等待体验。 首先,我们要理解“进度条”...

    WPF按钮条导航控件

    在WrapPanel基础上设计的按钮条导航控件,可横向/纵向排列按钮,也可以多列排列控件,类似于TabControl的标签条,用于不同页面的导航,但该控件没有容器,通过和Frame控件的配合,实现导航到不同的Page对象,样式可...

    WPF滚动条控件样式

    在Windows Presentation Foundation (WPF) 中,滚动条控件(ScrollBar)和ScrollViewer是用于处理内容超出可视区域的情况的关键组件。它们提供了用户界面中的导航功能,允许用户查看和操作不可见的内容。本篇将深入...

    WPF画线控件源码,非常有用的控件

    "WPF画线控件源码"是指一个专门为WPF平台设计的控件,它允许用户在界面上绘制线条,为应用程序提供动态数据可视化的能力。这种控件在数据监控、图表绘制或者任何需要实时数据可视化的应用中非常有用。 WPF画线控件...

    wpf 界面控件随着界面大小进行缩放

    综上所述,WPF的界面缩放机制结合了布局管理、变换、事件处理和滚动条等多个方面,为开发者提供了丰富的工具来创建响应式、用户友好的应用程序。通过熟练掌握这些技术,开发者可以构建出在各种设备上都能优雅呈现的...

    wpf控件库重写美化了各控件,如按钮、表格等

    标题“wpf控件库重写美化了各控件,如按钮、表格等”和描述“wpf控件库重写所有基础控件(按钮、表格、滚动条等美化),非常漂亮”都指向一个主题:对WPF原生控件的自定义和美化工作。 首先,我们要理解WPF中的控件...

    WPF自定义分页控件

    本主题将深入探讨如何创建一个自定义的分页控件,该控件具备首页、尾页、上一页、下一页、页面跳转和单页显示条数切换等功能。我们将讨论其设计思路、实现方法以及如何在实际项目中使用这个控件。 首先,让我们了解...

    WPF标示线控件

    在Windows Presentation Foundation (WPF) 中,开发人员可以创建各种自定义控件以满足特定的用户界面需求。本文将深入探讨“WPF标示线控件”,这是一个专门用于标注和说明的控件,适用于在界面上添加指示性线条。这...

    WPF时钟控件源代码

    总之,"WPF时钟控件源代码"是一个实用的学习资源,它涵盖了WPF开发中的多个核心概念,如UI设计、数据绑定、事件处理和动画。无论是用于实际项目还是学习研究,都能从中受益匪浅。通过深入理解和复用这段代码,开发者...

    WPF 控件 模拟手机信号 wifi信号

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)控件来模拟手机信号和Wi-Fi信号。WPF是.NET Framework的一部分,它提供了一种强大的机制来构建丰富的、交互式的桌面应用程序。在这个项目中...

    Wpf开发的曲线控件 (源码)

    综上所述,WPF中的曲线控件开发涉及多个核心概念和技术,包括XAML、数据绑定、依赖属性、控件模板、动画效果以及性能优化等。通过这个源码,开发者可以深入学习并掌握这些技能,为自己的应用程序创建功能强大的数据...

    wpf常用控件 很实用 控件开发

    7. **ScrollBar**:滚动条控件,当内容超过控件显示范围时提供滚动功能。 8. **DatePicker**和**TimePicker**:分别用于选取日期和时间。 9. **Image**:图像控件,可以显示图片。 10. **Grid**和**StackPanel**:...

    WPF经典教程之WPF控件内容模型

    ContentControl适合简单的单个元素显示,HeaderedContentControl适用于需要标题的场景,ItemsControl用于展示列表或集合,而HeaderedItemsControl则在需要标题的同时展示多条数据。 WPF的控件内容模型还支持模板化...

    WPF 滑动修改音量控件.rar

    总的来说,"WPF滑动修改音量控件"案例涵盖了从基础的控件定制到高级的数据绑定和事件处理等多个方面,是学习和掌握WPF开发的好材料。通过研究这个案例,开发者可以了解到如何将WPF的强大功能应用于实际项目中,提高...

    WPF主窗体嵌套用户控件可拖动加滚动信息

    用户控件是WPF中的一种复合控件,允许开发者创建自定义的可视化组件,结合多个基础控件和业务逻辑。通过在主窗体中嵌套用户控件,我们可以实现复杂界面的模块化设计,便于代码的管理和重用。 接下来,我们讨论如何...

    WPF自定义loading加载控件

    在Windows Presentation Foundation (WPF) 中,自定义控件是一种扩展框架功能,允许开发者创建具有独特外观和行为的用户界面元素。"WPF自定义loading加载控件"的主题旨在教你如何构建一个显示忙碌状态或加载过程的...

    WPF控件大全.zip

    在Windows Presentation Foundation(WPF)框架中,控件是构建用户界面的基本元素。"WPF控件大全.zip"这个资源包含了一系列WPF控件的样式文件,这些样式定义了控件的外观和行为,使开发者能够自定义UI的视觉表现。...

    WPF流程图 开发

    在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)技术开发流程图软件,重点关注控件图元的拖动、缩放和连线功能。WPF是.NET Framework的一部分,为构建丰富的用户界面提供了强大的支持,...

    WPF自定义控件库项目源码

    标题“WPF自定义控件库项目源码”表明这个项目是一个集合,其中包含了多个自定义的WPF控件,且这些控件的源代码是开放的。这为开发者提供了学习、修改和复用这些控件的机会,同时也为创建独特且有特色的应用程序界面...

Global site tag (gtag.js) - Google Analytics