超市管理系统
- 6. 商品管理
- 6.1 添加商品
- 6.1 商品管理主界面
- 6.3 修改商品
6. 商品管理
- 将前文中的GoodsView全部改成和数据库一致的ProductView
- 新增枚举类型商品类型ProductType.cs
namespace 超市管理系统.Enums
{public enum ProductType{水果类,休闲食品类,粮油类,饮料类,日用品}
}
namespace 超市管理系统.Entity
{public enum UnitType{斤,包,瓶,米,个,只,桶}
}
6.1 添加商品
- 将数据库Product表的Category从int改为nvarchar(50),在Visual Studio中删掉Product表并从模型更新新表
- 新增AddProductView.xaml,复用AddCustomerView.xaml并修改,新增加ImageSource属性和上传图片的SelectImageCommand命令。
- AddCustomerViewModel内增加SupplierList属性、SupplierList属性、supplierProvider字段,supplierProvider字段用于添加商品界面初次打开时加载当前现有供应商,并赋值给SupplierList属性,SupplierList属性为Combox的当前选择项。
- 单价虽然为double类型,但是输入框中无法输入小数点,需要将UpdateSourceTrigger设置为LostFocus,因为PropertyChanged是立即更新,不认小数点。而失去焦点时更新可以有小数点。
<Window x:Class="超市管理系统.View.AddProductView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:超市管理系统.View"mc:Ignorable="d"xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"WindowStartupLocation="CenterScreen"DataContext="{Binding Source={StaticResource Locator}, Path=AddProductViewModel}"Title="商品管理" Height="450" Width="650"><i:Interaction.Triggers><i:EventTrigger EventName ="Loaded"><i:InvokeCommandAction Command="{Binding LoadedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/></i:EventTrigger></i:Interaction.Triggers><Grid><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition/><RowDefinition Height="auto"/></Grid.RowDefinitions><Grid Grid.Row="0" Height="50" Background="{Binding AppData.Background}"><TextBlock Text="商品管理" FontSize="24" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/></Grid><Grid Grid.Row="1"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><StackPanel Grid.Row="0" Margin="10" HorizontalAlignment="Center" ><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="供应商:" Width="70" FontSize="18" VerticalAlignment="Center"/><ComboBox ItemsSource="{Binding SupplierList}" SelectedItem="{Binding Supplier}" DisplayMemberPath="Name" MinWidth="200"/></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="单 位:" Width="70" FontSize="18" VerticalAlignment="Center"/><ComboBox ItemsSource="{Binding Product.Units}" SelectedItem="{Binding Product.Unit}" Width="200" /></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="类 型:" Width="70" FontSize="18" VerticalAlignment="Center"/><ComboBox ItemsSource="{Binding Product.ProductType}" SelectedItem="{Binding Product.Category}" Width="200" /></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="商品名:" Width="70" FontSize="18" VerticalAlignment="Center"/><TextBox Text="{Binding Product.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200" Height="30" VerticalAlignment="Center"/></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="单 价:" Width="70" FontSize="18" VerticalAlignment="Center"/><TextBox Text="{Binding Product.Price, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Width="200" Height="30" VerticalAlignment="Center"/></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="库 存:" Width="70" FontSize="18" VerticalAlignment="Center"/><TextBox Text="{Binding Product.Quantity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200" /></StackPanel></StackPanel><Grid Grid.Column="1" Margin="10" Background="#E2E2E2"><TextBlock Text="选择商品图片" HorizontalAlignment="Center" VerticalAlignment="Center"/><Border Background="Transparent"><i:Interaction.Triggers><i:EventTrigger EventName="MouseUp"><i:InvokeCommandAction Command="{Binding SelectImageCommand}"/></i:EventTrigger></i:Interaction.Triggers><Image Source="{Binding ImageSource}"></Image></Border></Grid></Grid><StackPanel Grid.Row="2" Margin="10" Orientation="Horizontal" HorizontalAlignment="Right"><Button x:Name="button1" Content="新增" Command="{Binding AddCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" Margin="10" Width="60" Height="25"/><Button x:Name="button2" Content="关闭" Command="{Binding ExitCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" Margin="10" Width="60" Height="25"/></StackPanel></Grid>
</Window>
- AddCustomerViewModel.cs包含属性由下拉框的供应商列表、单位、类型、商品名、单价、库存,以及当前供应商等内容,实现代码如下:
- 注意需要为新增按钮增加Product.SupplierId = Supplier.Id 将当前供应商Id传入
using GalaSoft.MvvmLight.Command;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;
using 超市管理系统.Entity;
using 超市管理系统.Helper;namespace 超市管理系统.ViewModel
{public class AddProductViewModel : ViewModelBase2{private ProductProvider productProvider = new ProductProvider();private Product product;public Product Product{get { return product; }set{product = value;RaisePropertyChanged();}}private SupplierProvider supplierProvider = new SupplierProvider();private List<Supplier> supplierList = new List<Supplier>();public List<Supplier> SupplierList{get { return supplierList; }set { supplierList = value; RaisePropertyChanged(); }}private Supplier supplier;public Supplier Supplier{get { return supplier; }set{supplier = value;RaisePropertyChanged();}}#region commandspublic RelayCommand<Window> LoadedCommand{get{return new RelayCommand<Window>((view) =>{Product = new Product();SupplierList = supplierProvider.GetAll();ImageSource = null;Supplier = null;});}}public RelayCommand<Window> AddCommand{get{return new RelayCommand<Window>((view) =>{if (string.IsNullOrEmpty(Product.Name)){MessageBox.Show("姓名不能为空!");return;}Product.SupplierId = Supplier.Id;Product.InsertDate = DateTime.Now;int count = productProvider.Insert(Product);if (count > 0){MessageBox.Show("操作成功!");}view.DialogResult = true;view.Close();});}}private BitmapImage imageSourece;public BitmapImage ImageSource{get{return imageSourece;}set{imageSourece = value;RaisePropertyChanged();}}public RelayCommand<Window> SelectImageCommand{get{return new RelayCommand<Window>((view) =>{OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Title = "选择图片";openFileDialog.Filter = "图片文件(*.jpg)|*.jpg|所有文件(*.*)|*.*";openFileDialog.FilterIndex = 1;openFileDialog.Multiselect = false;openFileDialog.RestoreDirectory = true;if (openFileDialog.ShowDialog().Value == true) { string fileName = openFileDialog.FileName;ImageSource = new BitmapImage(new Uri(fileName));product.Image = ImageHelper.GetImageString(fileName);var s = ImageHelper.GetBitmapImage(product.Image);ImageSource = s;}});}}public RelayCommand<Window> ExitCommand{get{return new RelayCommand<Window>((view) =>{Product = new Product();});}}#endregion}
}

- 新增商品时添加的图片需要将图片转换为二进制流。在项目新建Helper文件夹,增加ImageHelper类包含函数GetImageString获取图片二进制流和GetBitmapImage二进制流转化为图片。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media.Imaging;namespace 超市管理系统.Helper
{public class ImageHelper{public static string GetImageString(string fileName){try{FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);byte[] buffer = new byte[fileStream.Length];fileStream.Read(buffer, 0, buffer.Length);return Convert.ToBase64String(buffer);}catch (Exception e){MessageBox.Show(e.Message);return string.Empty;}}public static BitmapImage GetBitmapImage(string _buffer){BitmapImage image = new BitmapImage();try{byte[] buffer = Convert.FromBase64String(_buffer);MemoryStream stream = new MemoryStream(buffer, 0, buffer.Length);stream.Write(buffer, 0, buffer.Length);stream.Position = 0;image.BeginInit();image.CacheOption = BitmapCacheOption.OnLoad;image.StreamSource = stream;image.EndInit();image.Freeze();return image;}catch (Exception e){MessageBox.Show(e.Message);return image;}}}
}
6.1 商品管理主界面
- ProductView.xaml内容复用CustomerView.xaml并将Customer修改为Product,将绑定的属性改为Product属性
- 通过Image.ToolTip将鼠标悬停可实现图片放大
<UserControl x:Class="超市管理系统.View.ProductView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:超市管理系统.View" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"mc:Ignorable="d" Background="{Binding AppData.Background}"DataContext="{Binding Source={StaticResource Locator}, Path=ProductViewModel}"d:DesignHeight="450" d:DesignWidth="800"><i:Interaction.Triggers><i:EventTrigger EventName ="Loaded"><i:InvokeCommandAction Command="{Binding LoadedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"/></i:EventTrigger></i:Interaction.Triggers><Grid><Grid.RowDefinitions><RowDefinition Height="40"/><RowDefinition/></Grid.RowDefinitions><Border BorderBrush="#22304B" BorderThickness="0 0 0 1"><TextBlock Text="商品管理" VerticalAlignment="center" Margin="5 0 0 0" Foreground="{Binding AppData.Foreground}" FontSize="16"/></Border><Grid Grid.Row="1"><Grid.RowDefinitions><RowDefinition/><RowDefinition Height="auto"/></Grid.RowDefinitions><DataGrid ItemsSource="{Binding ProductList}"SelectedItem="{Binding SelectedProduct}"Style="{StaticResource DataGridStyle}"><DataGrid.Columns><DataGridTemplateColumn Width="auto" Header="序号"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding Id,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridTextBoxStyle}"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="商品名称"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="商品图片"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><Image Source="{Binding BitmapImage}" ><Image.ToolTip><Grid><Image Source="{Binding BitmapImage}"/></Grid></Image.ToolTip></Image></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="单价"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding Price, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridTextBoxStyle}" HorizontalAlignment="Left"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="单位"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding Unit, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridTextBoxStyle}" HorizontalAlignment="Left"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="分类"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding Category, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridTextBoxStyle}" HorizontalAlignment="Left"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="单位"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding Quantity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridTextBoxStyle}" HorizontalAlignment="Left"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Width="auto" Header="日期"><DataGridTemplateColumn.CellTemplate><DataTemplate><Grid><TextBox Text="{Binding InsertDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Style="{StaticResource DataGridTextBoxStyle}" HorizontalAlignment="Left"/></Grid></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid><Grid Grid.Row="1"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><StackPanel Grid.Column="0" Margin="0 5 5 5" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center"><TextBlock Text="当前商品:" Margin="0 0 10 0" Foreground="White" Width="auto" /><TextBlock Text="{Binding SelectedProduct.Name}" Foreground="White" Width="auto"/></StackPanel><StackPanel Grid.Column="1" Margin="0 5 5 5" Orientation="Horizontal" HorizontalAlignment="Right"><Button Content="新增商品" Command="{Binding OpenAddViewCommand}" Margin="0 0 10 0" Width="80" Height="25"/><Button Content="删除商品" Command="{Binding DeleteCommand}" Margin="0 0 10 0" Width="80" Height="25"/><Button Content="修改" Command="{Binding EditCommand}" Width="80" Margin="0 0 10 0" Height="25"/><Button Content="保存" Command="{Binding SaveCommand}" Width="80" Margin="0 0 10 0" Height="25"/></StackPanel></Grid></Grid></Grid>
</UserControl>
- ProductViewModel.cs内实现代码如下:
using CommonServiceLocator;
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using 超市管理系统.Entity;
using 超市管理系统.View;namespace 超市管理系统.ViewModel
{public class ProductViewModel : ViewModelBase2{private ProductProvider productProvider = new ProductProvider();private List<Product> productList = new List<Product>();public List<Product> ProductList{get { return productList; }set{productList = value;RaisePropertyChanged();}}private Product selectedProduct;public Product SelectedProduct{get { return selectedProduct; }set{selectedProduct = value;RaisePropertyChanged();}}#region commandspublic RelayCommand<UserControl> LoadedCommand{get{return new RelayCommand<UserControl>((view) =>{ProductList = productProvider.GetAll();});}}public RelayCommand<UserControl> OpenAddViewCommand{get{return new RelayCommand<UserControl>((view) =>{AddProductView addProductView = new AddProductView();if (addProductView.ShowDialog().Value == true){ProductList = productProvider.GetAll();}});}}public RelayCommand<UserControl> DeleteCommand{get{return new RelayCommand<UserControl>((view) =>{if (SelectedProduct == null) { return; }if (Dialog.Show() == true){var count = productProvider.Delete(SelectedProduct);if (count > 0){MessageBox.Show("删除成功");ProductList = productProvider.GetAll();}}});}}public RelayCommand<UserControl> SaveCommand{get{return new RelayCommand<UserControl>((view) =>{var count = productProvider.Save();if (count > 0){MessageBox.Show("保存成功");ProductList = productProvider.GetAll();}});}}public RelayCommand<Window> EditCommand{get{return new RelayCommand<Window>((view) =>{if (SelectedProduct == null) { return; }var vm = ServiceLocator.Current.GetInstance<EditProductViewModel>();vm.Product = SelectedProduct;EditProductView editProductView = new EditProductView();if (editProductView.ShowDialog().Value == true){ProductList = productProvider.GetAll();}});}}#endregion}
}

6.3 修改商品
- 新增EditProductView.xaml,复用EditCustomerView.xaml并修改,包含属性由下拉框的供应商列表、单位、类型、商品名、单价、库存,以及当前供应商等内容。
<Window x:Class="超市管理系统.View.EditProductView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:超市管理系统.View"xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"mc:Ignorable="d" WindowStartupLocation="CenterScreen"DataContext="{Binding Source={StaticResource Locator}, Path=EditProductViewModel}"Title="修改商品" Height="450" Width="650"><i:Interaction.Triggers><i:EventTrigger EventName ="Loaded"><i:InvokeCommandAction Command="{Binding LoadedCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}"/></i:EventTrigger></i:Interaction.Triggers><Grid><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition/><RowDefinition Height="auto"/></Grid.RowDefinitions><Grid Grid.Row="0" Height="50" Background="{Binding AppData.Background}"><TextBlock Text="修改商品" FontSize="24" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/></Grid><Grid Grid.Row="1"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><StackPanel Grid.Row="0" Margin="10" HorizontalAlignment="Center" ><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="供应商:" Width="70" FontSize="18" VerticalAlignment="Center"/><ComboBox ItemsSource="{Binding SupplierList}" SelectedItem="{Binding Supplier}" DisplayMemberPath="Name" MinWidth="200"/></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="单 位:" Width="70" FontSize="18" VerticalAlignment="Center"/><ComboBox ItemsSource="{Binding Product.Units}" SelectedItem="{Binding Product.Unit}" Width="200" /></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="类 型:" Width="70" FontSize="18" VerticalAlignment="Center"/><ComboBox ItemsSource="{Binding Product.ProductType}" SelectedItem="{Binding Product.Category}" Width="200" /></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="商品名:" Width="70" FontSize="18" VerticalAlignment="Center"/><TextBox Text="{Binding Product.Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200" Height="30" VerticalAlignment="Center"/></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="单 价:" Width="70" FontSize="18" VerticalAlignment="Center"/><TextBox Text="{Binding Product.Price, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200" Height="30" VerticalAlignment="Center"/></StackPanel><StackPanel Orientation="Horizontal" Height="30" Margin="0 5 0 10"><TextBlock Text="库 存:" Width="70" FontSize="18" VerticalAlignment="Center"/><TextBox Text="{Binding Product.Quantity, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200" /></StackPanel></StackPanel><Grid Grid.Column="1" Margin="10" Background="#E2E2E2"><TextBlock Text="选择商品图片" HorizontalAlignment="Center" VerticalAlignment="Center"/><Border Background="Transparent"><i:Interaction.Triggers><i:EventTrigger EventName="MouseUp"><i:InvokeCommandAction Command="{Binding SelectImageCommand}"/></i:EventTrigger></i:Interaction.Triggers><Image Source="{Binding ImageSource}"></Image></Border></Grid></Grid><StackPanel Grid.Row="2" Margin="10" Orientation="Horizontal" HorizontalAlignment="Right"><Button x:Name="button1" Content="确定" Command="{Binding OKCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" Margin="10" Width="60" Height="25"/><Button x:Name="button2" Content="关闭" Command="{Binding ExitCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" Margin="10" Width="60" Height="25"/></StackPanel></Grid>
</Window>
- EditProductViewModel.cs复用 AddProductViewModel.cs内的代码与命令。在OK按钮的命令中需要Product.SupplierId = Supplier.Id; 将当前供应商Id传入
using GalaSoft.MvvmLight.Command;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using 超市管理系统.Entity;
using 超市管理系统.Helper;namespace 超市管理系统.ViewModel
{public class EditProductViewModel : ViewModelBase2{private ProductProvider productProvider = new ProductProvider();private Product product;public Product Product{get { return product; }set{product = value;RaisePropertyChanged();}}private SupplierProvider supplierProvider = new SupplierProvider();private List<Supplier> supplierList = new List<Supplier>();public List<Supplier> SupplierList{get { return supplierList; }set{supplierList = value;RaisePropertyChanged();}}private Supplier supplier;public Supplier Supplier{get { return supplier; }set{supplier = value;RaisePropertyChanged();}}private BitmapImage imageSourece;public BitmapImage ImageSource{get{return imageSourece;}set{imageSourece = value;RaisePropertyChanged();}}#region commandspublic RelayCommand<Window> LoadedCommand{get{return new RelayCommand<Window>((view) =>{ImageSource = Product.BitmapImage;SupplierList = supplierProvider.GetAll();Supplier = SupplierList.FirstOrDefault(t => t.Id == Product.SupplierId);});}}public RelayCommand<Window> SelectImageCommand{get{return new RelayCommand<Window>((view) =>{OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Title = "选择图片";openFileDialog.Filter = "图片文件(*.jpg)|*.jpg|所有文件(*.*)|*.*";openFileDialog.FilterIndex = 1;openFileDialog.Multiselect = false;openFileDialog.RestoreDirectory = true;if (openFileDialog.ShowDialog().Value == true){string fileName = openFileDialog.FileName;ImageSource = new BitmapImage(new Uri(fileName));product.Image = ImageHelper.GetImageString(fileName);}});}}public RelayCommand<Window> OKCommand{get{return new RelayCommand<Window>((view) =>{if (string.IsNullOrEmpty(Product.Name)){MessageBox.Show("姓名不能为空!");return;}Product.SupplierId = Supplier.Id;int count = productProvider.Update(Product);if (count > 0){MessageBox.Show("操作成功!");}view.DialogResult = true;view.Close();});}}public RelayCommand<Window> ExitCommand{get{return new RelayCommand<Window>((view) =>{Product = new Product();});}}#endregion}
}
