wpf学习-格式化绑定数据
2014-10-31 15:33
309 查看
案例目的
案例是将产品的double型价格转换为美元型表示数据模型
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; } } }
转换模型:将double类型转换为货币显示的格式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Data; using System.Globalization; namespace DataBinding { [ValueConversion(typeof(double),typeof(string))] class PriceConverter:IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { double price = (double)value; return price.ToString("C", culture); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string price = value.ToString().ToString(culture); int result; if(int.TryParse(price,NumberStyles.Any,culture,out result)){ return result; } return value; } } }
数据源模型
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; } } }
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"> <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"> <TextBox.Text> <Binding Path="UnitCost"> <Binding.Converter> <local:PriceConverter></local:PriceConverter> </Binding.Converter> </Binding> </TextBox.Text> </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(); } } }
结果演示
相关文章推荐
- WPF学习之数据绑定
- SilverLight学习笔记--关于使用IValueConvert对绑定数据的格式化操作
- 【转载】wpf学习笔记数据绑定8
- WPF学习之数据绑定
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- WPF and Silverlight 学习笔记(二十):WPF数据绑定概述
- WPF学习笔记 - 数据绑定(在代码中)
- 【转载】wpf学习笔记数据绑定9
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- WPF学习笔记:(二)数据绑定模式与INotifyPropertyChanged接口
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
- WPF学习笔记一 依赖属性及其数据绑定
- WPF and Silverlight 学习笔记(二十):WPF数据绑定概述
- WPF and Silverlight 学习笔记(二十):WPF数据绑定概述
- wpf学习笔记-数据绑定功能总结
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF学习之数据绑定(转载)
- WPF学习笔记<二>数据绑定
- WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
- WPF and Silverlight 学习笔记(二十一):数据绑定值的自定义转换