本文主要介绍WPF中Combobox的后台绑定,我在这里主要讲解数据驱动

1、对于前台绑定,我们首先写出想要绑定的对象

新建一个Models文件夹,将Student类写入

 public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; } }

2、接下来,我们在前台绑定它

<ComboBox
Width="200"
Height="30"
Margin="10"
ItemsSource="{Binding Students}" />

3、我们需要用到List或者ObservableCollection将Student封装进去

那么后台代码写

public ObservableCollection<Student> Students { get; set; }
public MainWindowViewModel()
{
Students = new ObservableCollection<Student>()
{
new Student()
{
Id = 1,
Name="张三",
Age=12
},
new Student()
{
Id = 2,
Name="李四",
Age=12
},
new Student()
{
Id = 3,
Name="王五",
Age=12
},
};
}

运行后的结果是

现在我们继续改造,我们在前台加入DisplayMemberPath="Name"看看效果

 <ComboBox
Width="200"
Height="30"
Margin="10"
DisplayMemberPath="Name"
ItemsSource="{Binding Students}" />

发现,下拉列表变成了Student中的Name

接下来我们继续修改前台代码,加上一个Button

 <StackPanel>
<!--
DisplayMemberPath设置下拉框选则的是List的哪一位
SelectedValue 是鼠标选中的值 传递的地址是SelectedValuePath
-->
<ComboBox
Name="comboBox1"
Width="200"
Height="30"
Margin="10"
DisplayMemberPath="Name"
ItemsSource="{Binding Students}"
SelectedValue="{Binding SelectStudentName}"
SelectedValuePath="Name" />
<Button
Width="200"
Height="30"
Command="{Binding OpenCmd}" />
</StackPanel>

后台加上命令代码

 private string _name;

 public string SelectStudentName
{
get { return _name; }
set { SetProperty<string>(ref _name, value); }
} private DelegateCommand _fieldName;
public DelegateCommand OpenCmd =>
_fieldName ?? (_fieldName = new DelegateCommand(ExecuteCommandName)); void ExecuteCommandName()
{
MessageBox.Show(SelectStudentName);
}



既然 SelectedValuePath是选中的值,我们将前台代码修改为SelectedValuePath="Age" />

再试一下

接下来,我们在扩展一下,这个主要是用在程序中换皮肤的操作

你想想,很多优秀的程序都有深色、浅色、自定义颜色吧,我这里只是用ComBoBox提供一个思路

代码简洁,实现简单的换肤效果

首先,由于我们暂时只有一个MainWindow,那么资源字典就很好写了

新建一个资源字典,位置随意存放,我直接放在根目录下,你们项目小的话,可以写一个Styles文件夹,专门存放资源字典,项目大的话,写一个Theme类库,存放也行,我这里在根目录简单写一下。

 <Style TargetType="{x:Type local:MainWindow}">
<Setter Property="Background" Value="{Binding Path=SelectedSkinColor.Color}"/>
</Style>

在App.xaml引入资源字典

<Application.Resources>
<ResourceDictionary Source="/SkinColorsStyle.xaml" />
</Application.Resources>

我懒得去重新写对象了,这个皮肤直接放在刚才写的Student了。

你们不要这要写,最好还是重新起一个Skin类

 public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Brush Color { get; set; }
}

接下来就是改造代码。

前台

<ComboBox
x:Name="comboBox"
Width="200"
Height="30"
Margin="10"
DisplayMemberPath="Name"
ItemsSource="{Binding Students}"
SelectedItem="{Binding Path=SelectedSkinColor}"
SelectedValuePath="Color" />

后台

 private Student _selectedSkinColor = new Student { Color = Brushes.AliceBlue };
public Student SelectedSkinColor
{
get { return _selectedSkinColor; }
set
{
if (_selectedSkinColor != value)
{
_selectedSkinColor = value;
RaisePropertyChanged();
}
}
}
//不要忘记刚才实例化的,加上一个字段Color
//看,我是写在Student中的,你们可以重新写Skin类
new Student()
{
Id = 1,
Name="张三",
Age=12,
Color = Brushes.Blue
},



Combobox后台绑定的更多相关文章

  1. WPF dataGrid下的ComboBox的绑定

    WPF dataGrid下的ComboBox的绑定 Wpf中dataGrid中的某列是comboBox解决这个问题费了不少时间,不废话了直接上代码 xaml 代码 <DataGridTempla ...

  2. [WinForm] DataGridView 绑定 DT && ComboBox 列绑定 Dict

    一  需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面 ...

  3. GridView后台绑定数据列表方法

    在很多时候数据绑定都是知道了数据表中的表字段来绑定GridView控件的,那时候我就有个想法希望通过表明来查询数据库中的字段来动态的绑定GirdView控件数据并提供了相关的操作列,在网上找了一些资料 ...

  4. WPF DATAGrid 空白列 后台绑定列 处理

    原文:WPF DATAGrid 空白列 后台绑定列 处理 AutoGenerateColumns <DataGrid x:Name="dataGrid" Margin=&qu ...

  5. HighChat动态绑定数据 数据后台绑定(四)

    后台绑定数据,直接返回json数据 IList<SummaryHour> adHourData = summarybll.FindList(str); List<, , , , , ...

  6. HighChat动态绑定数据 数据后台绑定(三)

    今天看了几位大佬的博客,学到了一些,现在分享一下,也作为以后的参考 不多说看代码 1.后台代码 public ActionResult Ajax2() { ReportData reportData ...

  7. 从后台绑定数据到ligerui 的comboBox下拉框组件

    这次来记录一下ligerUI的comboBox下拉框组件,ligerUI的API里也有相关描写叙述,上面都是前台写死数据,然后显示在组件中,我这次要说的是将后台的数据绑定到下拉框组件中,废话不多说. ...

  8. C#后台绑定ComboBox

    C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...

  9. Ext.net中Combobox如何绑定数据库中的值-通用方法

    今天在项目中再次碰到了问题,就是Combobox中的值如果是直接绑定很简单.简单添加项就行了.代码如下: <ext:ComboBox ID=" /> </Items> ...

  10. (WPF) ComboBox 之绑定

    1.  在UI(Xaml) 里面直接绑定数据. <Window x:Class="WpfTutorialSamples.ComboBox_control.ComboBoxSample& ...

随机推荐

  1. 2022-05-06:给你一个整数数组 arr,请你将该数组分隔为长度最多为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到的元

    2022-05-06:给你一个整数数组 arr,请你将该数组分隔为长度最多为 k 的一些(连续)子数组.分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值. 返回将数组分隔变换后能够得到的元 ...

  2. javaer你还在手写分表分库?来看看这个框架怎么做的 干货满满

    java orm框架easy-query分库分表之分表 高并发三驾马车:分库分表.MQ.缓存.今天给大家带来的就是分库分表的干货解决方案,哪怕你不用我的框架也可以从中听到不一样的结局方案和实现. 一款 ...

  3. 改变用户体验:Whirl动画加载库的无限可能

    哈喽!欢迎来到程序视点.今天小二哥要分享的不是 Animate.js,也不是 Move.js,而是能提供108种加载动画的库:Whirl. 让加载动画变得丰富多彩! 最省力的加载动画 话不多说,直接来 ...

  4. Java如何实现去重?这是在炫技吗?

    大家好,我3y啊.由于去重逻辑重构了几次,好多股东直呼看不懂,于是我今天再安排一波对代码的解析吧.austin支持两种去重的类型:N分钟相同内容达到N次去重和一天内N次相同渠道频次去重. Java开源 ...

  5. ChatGPT在线体验原理课-概览:ChatGPT 与自然语言处理

    # 概览:ChatGPT 与自然语言处理 本文将介绍 ChatGPT 与自然语言处理的相关知识. ## ChatGPT 与图灵测试 图灵测试是人工智能领域的一个经典问题,它旨在检验计算机是否能够表现出 ...

  6. Spring配置动态数据库

    前言 本文主要介绍使用spring boot 配置多个数据库,即动态数据库 开始搭建 首先创建一个SpringWeb项目--dynamicdb(spring-boot2.5.7) 然后引入相关依赖lo ...

  7. 从n个不同元素中有放回的取出r个且不计顺序,有多少种不同的取法?

    从n个不同元素中有放回的取出r个且不计顺序,有多少种不同的取法? 答案是:\(C_{n+r-1}^r\) 解析 因为是有放回地取出,所以同一个元素可能会被取多次,并且取出的元素是不计顺序的,那么如果我 ...

  8. macOS 系统 Kafka 快速入门

    Kafka 的核心功能是高性能的消息发送与高性能的消息消费.以下是 Kafka 的快速入门教程. 下载并解压缩 Kafka 二进制代码压缩文件 打开 Kafka 官网的下载地址,可以看到不同版本的 K ...

  9. 解读XML - Foreach循环

    <foreach item="item" index="index" collection="supplyIdAry" open=&q ...

  10. 自动设置IP地址和自动获取IP地址bat批处理文件

    自动设置IP地址.bat Echo offecho  手动设置IP地址....Netsh interface IP Set Addr "本地连接" Static 192.168.1 ...