wpf学习-根据绑定数据有条件地改变元素的属性
来源:互联网 发布:赛门铁克备份软件 编辑:程序博客网 时间:2024/06/08 10:54
案例目的
案例是根据产品的价格的大小来设置显示价格控件TextBox的背景颜色
数据模型
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DataBinding{ class Products { public int ProductID { get; set; } public int CategoryID{ get; set; } public String ModelNumber{ get; set; } public String ModelName{ get; set; } public String ProductImageName{ get; set; } public double UnitCost { get; set; } public String Description { get; set; } public Products() { } public Products(int _ProductID, int _CategoryID, String _ModelNumber, String _ModelName, String _ProductImageName, double _UnitCost, String _Description) { ProductID = _ProductID; CategoryID = _CategoryID; ModelNumber = _ModelNumber; ModelName = _ModelName; ProductImageName = _ProductImageName; UnitCost = _UnitCost; Description = _Description; } } class Categories { public int CategoryID { get; set; } public string CategoryName { get; set; } public Categories() { } public Categories(int _CategoryID, string _CategoryName) { CategoryID = _CategoryID; CategoryName = _CategoryName; } }}
数据源模型
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace DataBinding{ class ProductsDao { List<Products> productList = new List<Products>(); public ProductsDao(){ InitProducts(); } private void InitProducts() { Categories category1 = new Categories(1, "水果"); Categories category2 = new Categories(2, "干果"); Categories category3 = new Categories(3, "小吃"); Products product1 = new Products(1, 1, "modelNumber1", "modelName1", "./",1.1, "好1"); Products product2 = new Products(2, 1, "modelNumber2", "modelName2", "./", 1.2, "好2"); Products product3 = new Products(3, 2, "modelNumber3", "modelName3", "./", 1.3, "好3"); Products product4 = new Products(4, 2, "modelNumber4", "modelName4", "./", 1.4, "好4"); Products product5 = new Products(5, 3, "modelNumber5", "modelName5", "./", 1.5, "好5"); Products product6 = new Products(6, 3, "modelNumber6", "modelName6", "./", 1.6, "好6"); Products product7 = new Products(7, 3, "modelNumber7", "modelName7", "./", 1.7, "好7"); productList.Add(product1); productList.Add(product2); productList.Add(product3); productList.Add(product4); productList.Add(product5); productList.Add(product6); productList.Add(product7); } public Products GetProductByID(int ID) { return productList[ID]; } public List<Products> GetAllProducts() { return productList; } }}
转换模型:当price 的值大于MinimumPriceToHighLight时,改变背景颜色
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Data;using System.Windows.Media;namespace DataBinding{ class PriceToBackgroundConverter:IValueConverter { public Brush DefaultBrush { get; set; } public Brush HighLightBrush { get; set; } public double MinimumPriceToHighLight { get; set; } public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { double price = (double)value; if (price > MinimumPriceToHighLight) { return HighLightBrush; } else { return DefaultBrush; } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }}
xmal布局文件
<Window x:Class="DataBinding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:DataBinding" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <local:PriceConverter x:Key="priceConverter"></local:PriceConverter> <local:PriceToBackgroundConverter x:Key="priceToBackgroundConverter" MinimumPriceToHighLight="1.4" DefaultBrush="{x:Null}" HighLightBrush="Red"></local:PriceToBackgroundConverter> </Window.Resources> <Grid Background="LightBlue"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"></ColumnDefinition> <ColumnDefinition Width="2*"></ColumnDefinition> </Grid.ColumnDefinitions> <ListBox x:Name="productList" DisplayMemberPath="ModelName"></ListBox> <StackPanel Grid.Column="1" DataContext="{Binding ElementName=productList, Path=SelectedItem}"> <StackPanel Orientation="Horizontal"> <TextBlock Text="Model Number :" Margin="5"></TextBlock> <TextBox Margin="5" Width="200" Text="{Binding Path=ModelNumber}"></TextBox> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="Model Name :" Margin="5"></TextBlock> <TextBox Margin="5" Width="200" Text="{Binding Path=ModelName}"></TextBox> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="Unit Cost :" Margin="5"></TextBlock> <TextBox Margin="5" Width="200" Background="{Binding Path=UnitCost, Converter={StaticResource priceToBackgroundConverter}}" Text="{Binding Path=UnitCost, Converter={StaticResource priceConverter}}"></TextBox> </StackPanel> <TextBlock Text="Description :" Margin="5"> </TextBlock> <TextBox Margin="5,5,10,5" MinHeight="140" Text="{Binding Path=Description}"></TextBox> </StackPanel> </Grid></Window>
xaml隐藏代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;namespace DataBinding{ /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); init(); } private void init() { ProductsDao dao = new ProductsDao (); productList.ItemsSource = dao.GetAllProducts(); } }}
结果演示
0 0
- wpf学习-根据绑定数据有条件地改变元素的属性
- 有条件的数据绑定
- WPF数据绑定的学习
- WPF元素的绑定
- WPF 绑定到父元素属性 多行Text的Button
- [WPF学习]数据绑定
- WPF学习----数据绑定
- WPF数据绑定学习
- Oracle有条件地插入数据
- WPF学习笔记:ComboBox的数据绑定
- WPF中在listview进行数据绑定,根据绑定数据调整一列的显示
- wpf 控件的依赖属性和数据绑定
- WPF学习之数据绑定
- WPF学习之数据绑定
- WPF学习之数据绑定
- WPF学习之数据绑定
- wpf学习-格式化绑定数据
- WPF学习之数据绑定
- lua的观察者实现
- gravity start left 区别
- Servlet HTTP 状态码
- FreeRTOS(V8.0.1)系统之vTaskSuspendAll()和xTaskResumeAll()
- TVS参数详解及选型应用
- wpf学习-根据绑定数据有条件地改变元素的属性
- 百度地图ios 启动报manager start failed的问题
- JavaWeb开发中,servlet的url-pattern的映射规则
- 关于hash质数
- java Hibernate一级缓存和二级缓存概念案例详解
- 又见皇后!!!
- 通过中间人攻击的方法拦截传输在https上的加密信息
- 设计模式
- Android4.2中应用接收开机广播