本文主要介绍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. 2021-10-21:Excel 表列序号。给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。示例 1:输入: columnTitle = “A“,

    2021-10-21:Excel 表列序号.给你一个字符串 columnTitle ,表示 Excel 表格中的列名称.返回该列名称对应的列序号.示例 1:输入: columnTitle = &quo ...

  2. asp.net WebApi JWT

    文章转自 https://blog.csdn.net/liwan09/article/details/83820651 参考资料: https://docs.microsoft.com/en-us/a ...

  3. flutter填坑之旅(环境搭建篇--mac系统)

    上次配置过Mac到flutter环境,但是由于最近系统更新了,什么都没了又得从新配置,发现自己竟然好多都忘记了,看来还是得把它记下来才行 在Mac上安装并运行Flutter 最低要求: 操作系统:ma ...

  4. odoo总结---类继承和视图继承

    类继承 自从有了类,就有继承,继承是类最大的特性,ODOO开发有不例外,先ODOO集采总结如下: 1)类继承:扩展类中没有_name属性,因为它继承了父类的_name.对现有模型的扩展, 添加新功能, ...

  5. doo 13 之11 :开发之看板视图和用户端 QWeb

    QWeb 是 Odoo 使用的模板引擎,它基于 XML 来生成 HTML 片断和页面.通过 QWeb可生成内容丰富的看板(Kankan)视图.报表和 CMS 网页.本文中我们将学习QWeb 语法以及如 ...

  6. Python连接es笔记三之es更新操作

    本文首发于公众号:Hunter后端 原文链接:Python连接es笔记三之es更新操作 这一篇笔记介绍如何使用 Python 对数据进行更新操作. 对于 es 的更新的操作,不用到 Search() ...

  7. 沉痛悼念 pip search 一路走好

    不知道最近大家有没有发现在使用 pip search 的时候,总是出现一个 XMLRPC 的报错. $ pip search xlrdERROR: XMLRPC request failed [cod ...

  8. JavaWeb编程面试题——Spring Web MVC

    引言 面试题==知识点,这里所记录的面试题并不针对于面试者,而是将这些面试题作为技能知识点来看待.不以刷题进大厂为目的,而是以学习为目的.这里的知识点会持续更新,目录也会随时进行调整. 关注公众号:编 ...

  9. Java中的三元运算,以后用得到!

    前言 Java 中的三元运算,平时也叫做三目运算,大家了解吗?下面就详细介绍一下,以后在项目编程中用得到. 一.Java运算符 在最底层,Java 中的数据是通过使用运算符来操作的.运算符是一种特殊的 ...

  10. 【QCustomPlot】使用方法(动态库方式)

    说明 使用 QCustomPlot 绘图库辅助开发时整理的学习笔记.同系列文章目录可见 <绘图库 QCustomPlot 学习笔记>目录.本篇介绍 QCustomPlot 的一种使用方法, ...