本文主要介绍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. MySQL的varchar存储原理:InnoDB记录存储结构

    摘要:varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实 ...

  2. Django4全栈进阶之路8 createsuperuser创建超级管理员账号

    在 Django 4 中,可以使用 createsuperuser 命令来创建超级管理员账号.超级管理员拥有管理后台的所有权限,包括创建.编辑和删除用户.组.权限等操作. 下面是创建超级管理员账号的步 ...

  3. exclude查询时出掉或排除某个条件的信息

    exclude查询时出掉或排除某个条件的信息 print(Student.objects.all().exclude(nickname='A')

  4. Python分割多空格字符方法

    问题: 现有一个字符串 "1 + 5" ,想要获取 1,+,5 这三个元素 做法: str.split(' ') ['1', '', '', '', '', '', '+', '' ...

  5. OCR -- 文本检测

    目录 目标检测: 文本检测: 检测难点: 检测方法: 基于回归的文本检测 水平文本检测 任意角度文本检测 弯曲文本检测 基于分割的文本检测 代码示例 可视化文本检测预测 DB文本检测模型构建 back ...

  6. yolotv5和resnet152模型预测

    我已经训练完成了yolov5检测和resnet152分类的模型,下面开始对一张图片进行检测分类. 首先用yolo算法对猫和狗进行检测,然后将检测到的目标进行裁剪,然后用resnet152对裁剪的图片进 ...

  7. flutter系列之:做一个会飞的菜单

    目录 简介 定义一个菜单项目 让menu动起来 添加菜单内部的动画 总结 简介 flutter中自带了drawer组件,可以实现通用的菜单功能,那么有没有一种可能,我们可以通过自定义动画来实现一个别样 ...

  8. 【建议收藏】Log4j配置详解

    大家在日常开发中必然会使用到日志组件,Log4j是Java方向上比较常用的日志组件,今天给大家分享下Log4j支持的配置项,强烈建议收藏,以便配置时查看 #展示log4j各种配置,私有部分见文件中注释 ...

  9. 全同态(Fully Homomorphic Encryption, FHE)和半同态(Partially Homomorphic Encryption, PHE)介绍

    全同态(Fully Homomorphic Encryption, FHE)和半同态(Partially Homomorphic Encryption, PHE) 全同态加密(FHE)是指一种加密方案 ...

  10. 洛谷 P8026 [ONTAK2015] Bajtocja

    简要题意 有 \(d\) 张初始为空的无向图,每张中都有 \(n\) 个点,标号从 \(1\) 到 \(n\),\(m\) 次操作,每次往一张图加一条边,并询问有多少有序数对 \((a, b)\) 使 ...