【WPF】ComboBoxItem的禁用
来源:互联网 发布:linux剪辑软件 编辑:程序博客网 时间:2024/06/07 05:05
需求:下拉列表ComboBox中,要求部分Item不可用。效果是鼠标一上去后不获得焦点,且无法点击。
前台XAML界面:
<!-- 下拉列表:省份 --><ComboBox Grid.Column="0" Grid.Row="0" x:Name="provinceComboxBox" Margin="20,10,0,200" Height="20" ItemsSource="{Binding ProvinceList}" FontSize="12" Style="{StaticResource myComboBox_Useable}"> <ComboBox.ItemContainerStyle> <Style TargetType="ComboBoxItem"> <Setter Property="IsEnabled" Value="{Binding isEnabled}" /> </Style> </ComboBox.ItemContainerStyle></ComboBox>
样式文件如下:使得可用于不可用的Item文字颜色不同,显示的文字是实体类中的”provinceName”属性。
<!-- 样式:x:Key="myComboBox_Useable" 下拉列表中,可能包含不可选的Item! --><Style x:Key="myComboBox_Useable" TargetType="{x:Type ComboBox}"> <Setter Property="BorderThickness" Value="1"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <TextBlock Text="{Binding Path=provinceName}"> <TextBlock.Style> <Style TargetType="TextBlock"> <Style.Triggers> <DataTrigger Binding="{Binding isEnabled}" Value="True"> <DataTrigger.Setters> <Setter Property="Foreground" Value="blue"/> <!--<Setter Property="IsEnabled" Value="{Binding isEnabled}" />--><!-- 经测试,在样式中写无效,改到在前台写 --> </DataTrigger.Setters> </DataTrigger> <DataTrigger Binding="{Binding isEnabled}" Value="False"> <DataTrigger.Setters> <Setter Property="Foreground" Value="Pink"/> <!--<Setter Property="IsEnabled" Value="{Binding isEnabled}" />--><!-- 经测试,在样式中写无效,改到在前台写 --> </DataTrigger.Setters> </DataTrigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> </DataTemplate> </Setter.Value> </Setter></Style>
ViewModel中声明前台控件ItemsSource绑定到的列表
private ObservableCollection<Provinces> provinceList; // 所有省份的信息public ObservableCollection<Provinces> ProvinceList{ get { return provinceList; } set { SetProperty(ref provinceList, value); }}
注意,前台ComboBoxItem的”IsEnabled”属性绑定到的是Provinces实体类中的”IsEnabled”属性。
public class Provinces{ public int provinceId { get; set; } // 省会ID public string provinceName { get; set; } // 省会名称 public bool isEnabled { get; set; } // 该省份是否可用}
控制层给ProvinceList列表填充数据即可。
houseTypeViewModel.ProvinceList.Clear();houseTypeViewModel.ProvinceList = DataList; // 这是联网获取的数据!foreach (var item in houseTypeViewModel.ProvinceList){ // 模拟的数据 if (item.provinceName.Equals("广西壮族自治区") || item.provinceName.Equals("广东省")) { item.isEnabled = true; } houseTypeViewModel.ProvinceName.Add(item.provinceName);}
最终效果如下图:
阅读全文
0 0
- 【WPF】ComboBoxItem的禁用
- 【WPF】获取下拉列表(ComboBox)的选项(ComboBoxItem)的内容
- 禁用WPF窗体的最大化按钮
- C# 禁用进程内的按键 wpf
- 禁用WPF窗体的最大化按钮
- [WPF疑难]如何禁用WPF窗口的系统菜单(SystemMenu)
- [WPF疑难]如何禁用窗口上的关闭按钮
- WPF中如何禁用/去除窗口右上角的关闭按钮
- WPF中如何禁用/去除窗口右上角的关闭按钮
- WPF窗体最大化、最小化、关闭按钮的隐藏和禁用
- WPF禁用文本框的copy,paste,cut功能
- 取消禁用WPF中默认的平滑抗锯齿
- Wpf ScrollViewer 右键菜单禁用
- 泛型 类 ComboBoxItem<T>
- 禁用WPF中DataGrid默认的鼠标左键拖动多选行的效果
- 【WPF】TabControl禁用部分选项卡
- 【WPF】Window窗体禁用最大化/最小化按钮
- ComboBoxItem Class for .NET 2.0
- 为什么axios请求接口会发起两次请求
- 指针详细分析
- springMVC子容器使用spring父容器配置文件资源
- MySQL数据库主从同步设置中主服务器二进制日志无法开启的解决办法
- Android学习
- 【WPF】ComboBoxItem的禁用
- JavaScript 垃圾回收
- java到底是值传递还是引用传递?
- MySQL选择标识符
- springmvc 参数绑定
- 【c++基础】8.类和对象——类的实现1
- 第一章 并发编程的挑战
- Kotlin学习笔记之基础语法
- js 倒计时,在html中显示,距离刷新还有几秒