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="523.038" Width="361.701">
        <Window.Resources>
            <ObjectDataProvider IsAsynchronous="True" ObjectType="{x:Type data:StoreDB}" MethodName="GetProducts" x:Key="DataProvider"></ObjectDataProvider>
            <local:PriceConverter x:Key="PriceConverter"></local:PriceConverter>
            <local:ImageConverter x:Key="ImageConverter"></local:ImageConverter>
    <local:PriceToBrushConverter Min="10" Max="100" x:Key="PriceToBrushConverter"></local:PriceToBrushConverter>

        </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" ItemsSource="{Binding Source={StaticResource DataProvider}}" DisplayMemberPath="ModelName"></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}"
                  Background="{Binding Path=UnitCost, Converter={StaticResource PriceToBrushConverter}}">

                <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>
                <Border Grid.Row="3" Grid.Column="1" Margin="3" BorderBrush="Black" BorderThickness="1"  Width="100" Height="100" >
                    <Image Source="{Binding Path=ProductImage,Converter={StaticResource ImageConverter}}"></Image>


                </Border>
               
                <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,Converter={StaticResource PriceConverter}}">
                    
                </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 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();
            }
        }
        

    }


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


    namespace CollectionBinding
    {
        [ValueConversion(typeof(decimal),typeof(string))]
        public class PriceConverter:IValueConverter

        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                decimal price = (decimal)value;
                return price.ToString("C", culture);
            }


            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                string price = value.ToString();
                decimal result = 0;
                if (decimal.TryParse(price,System.Globalization.NumberStyles.Any,culture,out result))
                {
                    return result;
                }
                return value;
            }
        }

    }


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


    namespace CollectionBinding
    {
        [ValueConversion(typeof(decimal),typeof(Brush))]
        class PriceToBrushConverter:IValueConverter

        {
            public decimal Max { get; set; }
            public decimal Min { get; set; }
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
             decimal price = (decimal)value;
                if (price < Min)
                {
                    return new SolidColorBrush(Colors.Yellow);
                }
                else if (price<Max)
                {
                    return new SolidColorBrush(Colors.Green);
                }
                else
                {
                    return new SolidColorBrush(Colors.Red);
                }

            }


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

  • 相关阅读:
    kubernetes集群系列资料08--deployment介绍
    kubernetes集群系列资料07--RS介绍
    kubernetes集群系列资料06--pod介绍
    kubernetes集群系列资料05--K8S集群命令介绍
    kubernetes集群系列资料04--harbor部署
    uwsgi + nginx 部署python项目(一)
    argparse命令行传参
    Flask的 sqlalchemy 操作要点
    mysql: show full processlist 详解
    MySQL数据库的连接池问题
  • 原文地址:https://www.cnblogs.com/dxmfans/p/9434812.html
Copyright © 2011-2022 走看看