WPF 控件专题 ComboBox 自定义样式
1、ComboBox 介绍
ComboBox 表示带有下拉列表的选择控件,通过单击控件上的箭头可显示或隐藏下拉列表。也叫下拉列表控件。
**************************************************************************************************************
2、常用属性介绍
FontFamily:字体系列; FontSize:字体大小; FontStretch:字体在屏幕上紧缩或加宽的程度;FontWeight:字体粗细;
Background:背景; BorderBrush:边框颜色; BorderThickness:边框宽度; Foreground:前景色;
Width/Height:宽度/高度; Name:元素标识名称; IsEnabled:使能,是否可用; Margin:外边距;
Opacity:透明度; Visibility:可见性; IsVisible:是否可见; FlowDirection:其子元素的流动方向;
LayoutTransform:在执行布局时应该应用于此元素的图形转换方式。 RenderTransform:元素的呈现位置的转换信息;
RenderTransformOrigin:由RenderTransform声明的任何可能呈现转换的中心点,相对于元素的边界。
HorizontalAlignment/VerticalAlignment:在父元素中组合此元素时所应用的水平对齐特征/垂直对齐特征。
HorizontalContentAlignment/VerticalContentAlignment:控件内容的水平对齐方式/垂直对齐方式。
Items:获取用于生成 ItemsControl 的内容的集合。ItemTemplate:获取或设置用来显示每个项的 DataTemplate。
ItemsPanel:获取或设置模板,该模板定义对项的布局进行控制的面板。
ItemsSource:获取或设置用于生成 ItemsControl 的内容的集合。
SelectedIndex:获取或设置当前选择中第一项的索引,如果选择为空,则返回负一(-1)。
SelectedItem:获取或设置当前选择中的第一项,或者,如果选择为空,则返回 null。
SelectedItems:获取当前选定的项。 Text:获取或设置当前选定项的文本。
SelectedValue:获取或设置通过使用 SelectedItem 而获取的 SelectedValuePath 的值。
SelectedValuePath:获取或设置用于从 SelectedValue 获取 SelectedItem 的路径。
SelectionBoxItem:获取在选择框中显示的项。SelectionBoxItemTemplate:获取选择框内容的项模板。
SnapsToDevicePixels:获取或设置一个值,该值确定在呈现过程中,此元素的呈现是否应使用特定于设备的像素设置。
IsDropDownOpen:获取或设置一个值,该值指示组合框的下拉部分当前是否打开。
IsEditable:获取或设置一个值,该值指示启用或禁用 ComboBox 的文本框中的文本编辑。
IsReadOnly:获取或设置启用仅限选择模式的值,在此模式中,可选择但不可编辑组合框中的内容。
**************************************************************************************************************
3、具体示例代码:第一个ComboBox把ItemSource和静态资源绑定;第二个直接写入Item项。
<Grid><StackPanel><StackPanel.Resources><local:VacationSpots x:Key="myVacations"/></StackPanel.Resources><ComboBox Name="comboBox1" Width="150" Height="30" ItemsSource="{StaticResource myVacations}" Text="My Cities" IsEditable="true" IsReadOnly="true"VerticalContentAlignment="Center" Margin="10"/><TextBlock Margin="10" Text="{Binding ElementName=comboBox1, Path=SelectedItem}" Foreground="#dddddd" HorizontalAlignment="Center"/><ComboBox Width="150" Height="30" VerticalAlignment="Center" Margin="10"><ComboBoxItem>广东</ComboBoxItem><ComboBoxItem>广西</ComboBoxItem><ComboBoxItem>湖南</ComboBoxItem><ComboBoxItem>河北</ComboBoxItem><ComboBoxItem>河南</ComboBoxItem><ComboBoxItem>河北</ComboBoxItem><ComboBoxItem>山东</ComboBoxItem><ComboBoxItem>山西</ComboBoxItem></ComboBox></StackPanel>
</Grid>
静态资源绑定,集合定义代码
namespace WPFControlsTest
{/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();this.DataContext = this;}}public class VacationSpots : ObservableCollection<string>{public VacationSpots(){Add("Spain");Add("France");Add("Peru");Add("Mexico");Add("Italy");}}
}
**************************************************************************************************************
4、效果图
**************************************************************************************************************
5、使用列表或集合绑定ItemSource
上面说了一种ComboBox的ItemSource绑定方式(绑定静态类),我们还可以把ItemSource绑定列表或者集合。
添加前端代码:显示值为Name,后端选中的值为Value
<Grid><StackPanel ><ComboBox Width="150" Height="30" VerticalAlignment="Center" Margin="10" VerticalContentAlignment="Center" SelectedIndex="0"ItemsSource="{Binding NationalityInfo}" DisplayMemberPath="Name" SelectedValuePath="Value" SelectionChanged="ComboBox_SelectionChanged"></ComboBox><TextBlock x:Name="txtShow" Margin="10" Foreground="#dddddd" HorizontalAlignment="Center"/></StackPanel>
</Grid>
后端代码:定义一个类、集合或者列表、对列表赋值;
//定义一个类
public class Nationality
{public string Name { get; set; }//控件中显示的内容public string Value { get; set; }//选中的内容的值
}public MainWindow()
{InitializeComponent();this.DataContext = this;//对列表赋值NationalityInfo.Add(new Nationality() {Name = "中国", Value = "Chian" });NationalityInfo.Add(new Nationality() {Name = "俄罗斯", Value= "Russia" });NationalityInfo.Add(new Nationality() {Name = "朝鲜", Value= "North Korea" });NationalityInfo.Add(new Nationality() {Name = "巴基斯坦", Value= "Pakistan" });NationalityInfo.Add(new Nationality() {Name = "阿富汗", Value= "Afghanistan" });NationalityInfo.Add(new Nationality() { Name = "土耳其", Value = "Turkey" });
}
//第一个列表
private List<Nationality> nationalityInfo = new List<Nationality>();
public List<Nationality> NationalityInfo
{get { return nationalityInfo; }set { nationalityInfo = value; OnPropertyChanged("NationalityInfo"); }
}//属性更改通知事件
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{if (PropertyChanged != null){PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));}
}private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ComboBox combo = (ComboBox)sender;if(combo != null){txtShow.Text = "显示数据为:" + ((Nationality)combo.SelectedItem).Name + " 后端数据:" + combo.SelectedValue;}
}
效果图
**************************************************************************************************************
WPF 控件专题 ComboBox 自定义样式相关推荐
- WPf控件模板缺省样式
WPF控件模板缺省样式:http://www.cnblogs.com/khler/archive/2009/07/14/1523043.html 转载于:https://www.cnblogs.com ...
- WPF 控件专题 Image控件详解
1.Image 介绍 Image:表示用于显示图像的控件. Image可以加载以下图像类型:.bmp..gif..ico..jpg..png..wdp 和 .tiff.但是在显示多帧图像时,仅显示第一 ...
- 2021-08-20 WPF控件专题 DataGrid控件详解
1.DataGrid控件介绍 DataGrid简介 :MultiSelector Selector ItemsControl -条目控件 网格控件:可以自定义网格显示的数据的控件 自定义网格:列的形式 ...
- 2021-08-12 WPF控件专题 DataGrid控件详解
1.DataGrid控件介绍 DataGrid简介 :MultiSelector Selector ItemsControl -条目控件 网格控件:可以自定义网格显示的数据的控件 自定义网格:列的形式 ...
- WPF 控件专题 CheckBox 控件详解
1.CheckBox 介绍 CheckBox:复选框控件,是一种非常简单易用的组件,有启用/禁用两种状态,分别由CheckBox 控件的 Checked 和 Unchecked 事件来实现. Chec ...
- WPF 控件专题 Grid 控件详解
1.Grid 介绍 定义由列和行组成的灵活的网格区域,Grid顾名思义就是"网格",它的子控件被放在一个一个实现定义好的小格子里面,整齐配列,该对象可包含多个 Children对象 ...
- WPF 控件专题 ListBox 控件详解
1.ListBox 介绍 ListBox 列表控件. ListBox 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (,例如字符串.图像或面板) . 一个 ListBox ...
- 2021-08-11 WPF控件专题 ListView控件详解
1.ListView控件介绍 Listbox ComboBox TabControl ItemsControl 条目控件 Winform ListView 5View WPF ListView :用于 ...
- WPF 控件专题 Lable 控件详解
1.Lable 介绍 官方释义:表示包含一段任意类型内容的控件.也可以叫标签控件. Label控件和TextBlock看起来非常像.但在使用时就会发现,Label使用的是Content属性而不是Tex ...
最新文章
- xcode升级之后,VVDocument失效的解决办法
- 虚拟机ping不通开发板如何解决
- 关于form组件的补充-------formChoice
- 前端学习(1756):前端调试值之如何监控页面的动画
- 源码 状态机_LLVM学习笔记(1)--初探源码
- 编程基础 垃圾回收_编程中的垃圾回收指南
- 「leetcode」486. 预测赢家:【三种递归+动态规划】由浅入深,步步到位
- 如何将安卓数据同步到Mac电脑上
- c# rar压缩解压缩
- Visual Stdio fopen错误
- 双拼输入法的学习与使用
- 欧拉-拉格朗日方程(The Euler-Lagrange equation)
- matlab 四元方程求解,如何用Matlab求解如下一元四次方程,求指导
- 使用Qt对Excel复选框等进行阅读、修改
- 【论文解读--Xdog】(宇树科技鼻祖)新型电驱式四足机器人研制与测试
- 微信一年的支付限额满了20万,无法支付了怎么办?
- python爬取链家租房信息_Python爬取链家网上海市租房信息
- java 子类克隆_Java 浅克隆、深克隆
- 激荡的2020过后,物流江湖下个十年谁主沉浮?
- QTreeWidget使用整理
热门文章
- [嵌入式框架][nrf52820][nrf52840] 硬件USB_HID
- ant-design输入框自动获取焦点
- 《如来神掌》详细攻略3
- Java synchronized深度探幽
- 服务器2008怎么系统盘为d盘,硬盘安装Windows Server 2008(解决系统盘符变成D盘)
- php分布式session问题,分布式session一致性问题
- 巨型企业数字化,根本没有所谓的个性化定制化
- 固定vscode新打开的文件标签设置
- Bash:smbclient 未找到命令
- oracle12c EM的配置和使用