本文主要介绍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-11-19:第二高的薪水。表结构和数据的sql语句如下,输出200,因为200是第二大的。请问sql语句如何写? DROP TABLE IF EXISTS `employee`; CREAT

    2022-11-19:第二高的薪水.表结构和数据的sql语句如下,输出200,因为200是第二大的.请问sql语句如何写? DROP TABLE IF EXISTS `employee`; CREAT ...

  2. 2021-01-09:linux中,某一个实时日志通过什么命令查?

    福哥答案2020-01-09:[答案来自此链接:](https://www.zhihu.com/question/438536200)1.tailtail -f首先就是 tail -f,tail 命令 ...

  3. 2022-05-01:golang里,结构体B里包含一个结构体A和一个整型成员变量。现在要给结构体A实现一个方法,让它能访问到B的整型变量,这个方法应该怎么写? 如果还有结构体C,D,E,F...都和

    2022-05-01:golang里,结构体B里包含一个结构体A和一个整型成员变量.现在要给结构体A实现一个方法,让它能访问到B的整型变量,这个方法应该怎么写? 如果还有结构体C,D,E,F-都和B一 ...

  4. LeetCode 双周赛 104(2023/05/13)流水的动态规划,铁打的结构化思考

    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 往期回顾:LeetCode 单周赛第 344 场 · 手写递归函数的通用套路 T1. 老人的数目(Easy) ...

  5. vue全家桶进阶之路24:Mock

    Mock 是一个 JavaScript 库,用于生成随机数据或模拟 HTTP 请求响应,用于前端开发中的单元测试.功能测试.集成测试等场景. Mock 可以生成各种类型的数据,包括字符串.数字.布尔值 ...

  6. WPF 入门笔记 - 02 - 布局综合应用

    本篇博文对接上篇末尾处WPF常用布局控件的综合应用,为痕迹g布局控件介绍课后作业的一个思路方法. 前言 首先来谈一谈布局原则: WPF窗口只能包含一个元素(Window元素属于内容控件,内容控件只允许 ...

  7. 【QCustomPlot】性能提升之修改源码(版本 V2.x.x)

    说明 使用 QCustomPlot 绘图库的过程中,有时候觉得原生的功能不太够用,比如它没有曲线平滑功能:有时候又觉得更新绘图数据时逐个赋值效率太低,如果能直接操作内存就好了:还有时候希望减轻 CPU ...

  8. BFF层聚合查询服务异步改造及治理实践 | 京东云技术团队

    首先感谢王晓老师的[接口优化的常见方案实战总结]一文总结,恰巧最近在对稳健理财BFF层聚合查询服务优化治理,针对文章内的串行改并行章节进行展开,分享下实践经验,主要涉及原同步改异步的过程.全异步化后衍 ...

  9. 为teamcity的代码语法检查工具pyflakes增加支持python2和python3

    TeamCity和pyflakes TeamCity是一款由JetBrains公司开发的持续集成和部署工具,它提供了丰富的功能来帮助团队协作进行软件开发.其中包括代码检查.自动化构建.测试运行.版本控 ...

  10. JavaWeb入门必备JavaEE规范!

    前言 对于学习 Java 的同学,大都是 Web 方向的.我们学习 JavaWeb 开发肯定是一个循序渐进的过程,学习前有一些前置知识要掌握,比如 JavaSE 相关知识,HTML.CSS.JavaS ...