您的位置:首页 > 其它

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();
}
}
}


结果演示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: