zoukankan      html  css  js  c++  java
  • WPF 数据模板使用值转换器

    <Window x:Class="CollectionBinding.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:data="clr-namespace:ClassLibrary;assembly=ClassLibrary"
            xmlns:local="clr-namespace:CollectionBinding"
            Title="MainWindow" Height="449.904" Width="358.716">
        <Window.Resources>
            <local:ImageConverter x:Key="ImageConverter"></local:ImageConverter>
            <DataTemplate DataType="{x:Type data:Product}">
                <Border Margin="3" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="4">
                    <Grid Margin="3">
                        <Grid.RowDefinitions>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>
                        <TextBlock Margin="3" FontWeight="Bold" Text="{Binding Path=ModelNumber}"></TextBlock>
                        <TextBlock Grid.Row="1" Margin="3" FontWeight="Bold" Text="{Binding Path=ModelName}"></TextBlock>
                        <Image Grid.Row="2" Margin="3" Height="100" Width="100" Source="{Binding Path=ProductImage,Converter={StaticResource ImageConverter}}"></Image>
                    </Grid>
                </Border>
            </DataTemplate>

        </Window.Resources>
     
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="Auto"></RowDefinition>
                <RowDefinition Height="*"></RowDefinition>
            </Grid.RowDefinitions>
            <ListBox Margin="3" Grid.Row="0" Name="lstProducts" Height="120" 
                     ScrollViewer.VerticalScrollBarVisibility="Visible">
               
                
            </ListBox>
            <StackPanel Margin="3" Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
                <Button Margin="3" MinWidth="100" Name="btnGetProducts" Click="btnGetProducts_Click_1">GetProducts</Button>
            </StackPanel>
            <Grid Margin="3" Name="grid" Grid.Row="2" DataContext="{Binding ElementName=lstProducts,Path=SelectedItem}">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="Auto"></RowDefinition>
                    <RowDefinition Height="*"></RowDefinition>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <TextBlock Margin="3" Grid.Row="0" Grid.Column="0">CategoryID:</TextBlock>
                <TextBox Name="txtCategoryID" Margin="3" Grid.Row="0" Grid.Column="1" Text="{Binding Path=CategoryID}"></TextBox>


                <TextBlock Margin="3" Grid.Row="1" Grid.Column="0">ModelNumber:</TextBlock>
                <TextBox Name="txtModelNumber" Margin="3" Grid.Row="1" Grid.Column="1" Text="{Binding Path=ModelNumber}"></TextBox>


                <TextBlock Margin="3" Grid.Row="2" Grid.Column="0">ModelName:</TextBlock>
                <TextBox Name="txtModelName" Margin="3" Grid.Row="2" Grid.Column="1" Text="{Binding Path=ModelName}"></TextBox>


                <TextBlock Margin="3" Grid.Row="3" Grid.Column="0">ProductImage:</TextBlock>
                <TextBox Name="txtProductImage" Margin="3" Grid.Row="3" Grid.Column="1" Text="{Binding Path=ProductImage}"></TextBox>


                <TextBlock Margin="3" Grid.Row="4" Grid.Column="0">UnitCost:</TextBlock>
                <TextBox Name="txtUnitCost" Margin="3" Grid.Row="4" Grid.Column="1" Text="{Binding Path=UnitCost}">
                    
                </TextBox>
                
                <TextBox Name="txtDescription" Margin="3" Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2" TextWrapping="Wrap"
                         Text="{Binding Path=Description}" ScrollViewer.VerticalScrollBarVisibility="Visible"></TextBox>
            </Grid>
        </Grid>
    </Window>



    using ClassLibrary;
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    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 CollectionBinding
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }


            public ObservableCollection<Product> products;


            private void btnGetProducts_Click_1(object sender, RoutedEventArgs e)
            {
                products = StoreDB.GetProducts();
                lstProducts.ItemsSource = products;
            }




        }

    }


    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace ClassLibrary
    {
        public class StoreDB
        {
            public static string connString = Properties.Settings.Default.ConnectionString;




            public static Product GetProductByID(int id)
            {
                Product p = null;
                SqlConnection con = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand("GetProductByID", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ProductID", id);
                try
                {
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        p = new Product()
                        {
                            CategoryID = (int)reader[1],
                            ModelNumber = reader[2].ToString(),
                            ModelName = reader[3].ToString(),
                            ProductImage=reader[4].ToString(),
                            UnitCost = (decimal)reader[5],
                            Description = reader[6].ToString()
                        };
                    }
                    return p;


                }
                catch (Exception)
                {


                    throw;
                }
                finally
                {
                    con.Close();
                }
            }


            public static void UpdateProductByID(int ProductID,Product p)
            {
                SqlConnection con = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand("UpdateProductByID", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ProductID",ProductID);
                cmd.Parameters.AddWithValue("@CategoryID",p.CategoryID);
                cmd.Parameters.AddWithValue("@ModelNumber",p.ModelNumber);
                cmd.Parameters.AddWithValue("@ModelName",p.ModelName);
                cmd.Parameters.AddWithValue("@ProductImage",p.ProductImage);
                cmd.Parameters.AddWithValue("@UnitCost",p.UnitCost);
                cmd.Parameters.AddWithValue("@Description",p.Description);
                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception)
                {


                    throw;
                }
                finally
                {
                    con.Close();
                }
            }


            public static void InsertProduct(Product p)
            {
                SqlConnection con = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand("InsertProduct", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@CategoryID", p.CategoryID);
                cmd.Parameters.AddWithValue("@ModelNumber", p.ModelNumber);
                cmd.Parameters.AddWithValue("@ModelName", p.ModelName);
                cmd.Parameters.AddWithValue("@ProductImage", p.ProductImage);
                cmd.Parameters.AddWithValue("@UnitCost", p.UnitCost);
                cmd.Parameters.AddWithValue("@Description", p.Description);
                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception)
                {


                    throw;
                }
                finally
                {
                    con.Close();
                }
            }


            public static void DeleteProductByID(int id)
            {
                SqlConnection con = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand("DeleteProductByID", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@ProductID", id);
                try
                {
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                catch (Exception)
                {


                    throw;
                }
                finally
                {
                    con.Close();
                }
            }




            public static ObservableCollection<Product> GetProducts()
            {
                ObservableCollection<Product> products = new ObservableCollection<Product>();
                SqlConnection con = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand("GetProducts", con);
                cmd.CommandType = System.Data.CommandType.StoredProcedure;
                try
                {
                    con.Open();
                    SqlDataReader reader = cmd.ExecuteReader();
                    while (reader.Read())
                    {
                        products.Add(new Product()
                        {
                            ProductID = (int)reader[0],
                            CategoryID = (int)reader[1],
                            ModelNumber = reader[2].ToString(),
                            ModelName = reader[3].ToString(),
                            ProductImage = reader[4].ToString(),
                            UnitCost = (decimal)reader[5],
                            Description = reader[6].ToString()
                        });
                    }
                    return products;


                }
                catch (Exception)
                {
                    throw;
                }
                finally
                {
                    con.Close();
                }
            }
        }

    }


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace ClassLibrary
    {
        public class Product
        {
            public int ProductID { get; set; }
            public int CategoryID { get; set; }
            public string ModelNumber { get; set; }
            public string ModelName { get; set; }
            public string ProductImage { get; set; }
            public decimal UnitCost { get; set; }
            public string Description { get; set; }


            public Product(int CategoryID = 0, string ModelNumber = "",
                string ModelName = "", string ProductImage = "", decimal UnitCost=0,string Description="")
            {
                this.CategoryID = CategoryID;
                this.ModelNumber = ModelNumber;
                this.ModelName = ModelName;
                this.ProductImage = ProductImage;
                this.UnitCost = UnitCost;
                this.Description = Description;
            }


        }

    }



    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Data;
    using System.Windows.Media.Imaging;


    namespace CollectionBinding
    {
        [ValueConversion(typeof(string), typeof(BitmapImage))]
        public class ImageConverter : IValueConverter
        {
            string rootPath = Directory.GetCurrentDirectory();
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string imagePath = Path.Combine(rootPath, value.ToString());
                return new BitmapImage(new Uri(imagePath));
            }


            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
        
    }

  • 相关阅读:
    Java基础--JDBC
    DQL---连接查询(内连接、外连接)、子查询、分页查询
    Java基础--注解、反射
    1、Centos7系统安装docker,并配置阿里云镜像加速器
    linux——vim命令
    linux——yum命令
    linux——ps命令
    31、springboot——缓存之JSR107——@Caching和@CacheConfig的使用⑤
    30、springboot——缓存之JSR107——@CacheEvict的使用④
    30、springboot——缓存之JSR107——@CachePut的使用③
  • 原文地址:https://www.cnblogs.com/dxmfans/p/9434806.html
Copyright © 2011-2022 走看看