zoukankan      html  css  js  c++  java
  • wpf自定义colorpicker

    自定义colorpicker

    <ObjectDataProvider MethodName="GetType"   
                    ObjectType="{x:Type system:Type}" x:Key="colorsTypeOdp">
                <ObjectDataProvider.MethodParameters>
                    <system:String>System.Windows.Media.Colors, PresentationCore,  
                Version=4.0.0.0, Culture=neutral,   
                PublicKeyToken=31bf3856ad364e35</system:String>
                </ObjectDataProvider.MethodParameters>
            </ObjectDataProvider>
            <ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}" MethodName="GetProperties" x:Key="colorPropertiesOdp">
            </ObjectDataProvider>
            <Style x:Key="HongColorPickerItemStyle" TargetType="ComboBoxItem">
                <Setter Property="Margin" Value="1"></Setter>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ComboBoxItem">
                            <Grid>
                                <Border BorderBrush="#FFC2C7CB" BorderThickness="1" Margin="1">
                                    <Rectangle Fill="{Binding Name}" Width="20" Height="18"></Rectangle>
                                </Border>
                                <Rectangle x:Name="Temp_MouseOverRect" Visibility="Collapsed" Stroke="LightBlue" StrokeThickness="1"></Rectangle>
                            </Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Visibility" TargetName="Temp_MouseOverRect" Value="Visible"></Setter>
                                </Trigger>
                                <Trigger Property="IsSelected" Value="True">
                                    <Setter Property="Visibility" TargetName="Temp_MouseOverRect" Value="Visible"></Setter>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <Style x:Key="HongColorPickerToggleButtonStyle" TargetType="{x:Type ToggleButton}">
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="OverridesDefaultStyle" Value="true"/>
                <Setter Property="IsTabStop" Value="false"/>
                <Setter Property="Focusable" Value="false"/>
                <Setter Property="ClickMode" Value="Press"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ToggleButton}">
                            <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}">
                                <!--<Grid HorizontalAlignment="Right" Width="32">
                                    <Path x:Name="Arrow" Data="M 0 0 L 5 5 L 10 0 Z" Fill="{TemplateBinding Foreground}" HorizontalAlignment="Center"  VerticalAlignment="Center"/>
                                </Grid>-->
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="BorderBrush" TargetName="Bd" Value="#FF0D47A1"/>
                                    <!--<Setter Property="Fill" TargetName="Arrow" Value="#FF0D47A1"/>-->
                                </Trigger>
                                <Trigger Property="IsChecked" Value="True">
                                    <Setter Property="BorderBrush" TargetName="Bd" Value="#FF0D47A1"/>
                                    <!--<Setter Property="Fill" TargetName="Arrow" Value="#FF0D47A1"/>-->
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="false">
                                    <Setter Property="BorderBrush" TargetName="Bd" Value="#FFAAAAAA"/>
                                    <!--<Setter Property="Fill" TargetName="Arrow" Value="#FFAAAAAA"/>-->
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <Style x:Key="HongColorPickerStyle" TargetType="{x:Type ComboBox}">
                <Setter Property="Foreground" Value="#FF525E66"/>
                <Setter Property="Background" Value="White"/>
                <Setter Property="FontSize" Value="14"/>
                <Setter Property="BorderBrush" Value="#FFC7C7C7"/>
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
                <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
                <Setter Property="Padding" Value="10,0,0,0"/>
                <Setter Property="ScrollViewer.CanContentScroll" Value="true"/>
                <Setter Property="ScrollViewer.PanningMode" Value="Both"/>
                <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
                <Setter Property="ItemsSource" Value="{Binding Source={StaticResource colorPropertiesOdp}}"></Setter>
                <Setter Property="SelectedValuePath" Value="Name"></Setter>
                <Setter Property="ItemsPanel">
                    <Setter.Value>
                        <ItemsPanelTemplate>
                            <WrapPanel></WrapPanel>
                        </ItemsPanelTemplate>
                    </Setter.Value>
                </Setter>
                <Setter Property="ItemContainerStyle" Value="{StaticResource HongColorPickerItemStyle}"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ComboBox}">
                            <Grid x:Name="MainGrid" SnapsToDevicePixels="true">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="32"/>
                                </Grid.ColumnDefinitions>
                                <Popup x:Name="PART_Popup" AllowsTransparency="true" Grid.ColumnSpan="2" 
                                       IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}"  
                                       PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
                                    <Border x:Name="DropDownBorder" Background="White" BorderBrush="#FFC2C7CB" BorderThickness="1"  
                                            MaxHeight="{TemplateBinding MaxDropDownHeight}" 
                                            MinWidth="{Binding ActualWidth, ElementName=MainGrid}" 
                                            MaxWidth="300" Margin="1">
                                        <Border.Effect>
                                            <DropShadowEffect ShadowDepth="6" BlurRadius="12" Opacity="0.2" Direction="270"/>
                                        </Border.Effect>
                                        <Border x:Name="DropDownScrollViewer" Padding="0,2,0,0">
                                            <Grid RenderOptions.ClearTypeHint="Enabled">
                                                <Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0" ClipToBounds="True">
                                                    <Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" 
                                                           Height="{Binding ActualHeight, ElementName=DropDownBorder}" 
                                                           Width="{Binding ActualWidth, ElementName=DropDownBorder}"/>
                                                </Canvas>
                                                <ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                                            </Grid>
                                        </Border>
                                    </Border>
                                </Popup>
                                <Rectangle Tag="{TemplateBinding SelectedValue}" Fill="{Binding RelativeSource={RelativeSource Self},Path=Tag}"
                                           HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="1" Grid.ColumnSpan="2"></Rectangle>
                                <ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="Transparent" Grid.ColumnSpan="2" 
                                              IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
                                              Style="{StaticResource HongColorPickerToggleButtonStyle}"/>
                            </Grid>
                            <ControlTemplate.Triggers>
                                <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true"/>
                                <Trigger Property="HasItems" Value="false">
                                    <Setter Property="Height" TargetName="DropDownBorder" Value="0"/>
                                </Trigger>
                                <Trigger Property="IsEnabled" Value="false">
                                    <Setter Property="Foreground" Value="{DynamicResource Disabled}"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
  • 相关阅读:
    mongodb常用命令(转)
    C++位运算详解(转)
    C++Vector用法(转)
    php下载文件
    二维数组和指针(转)
    php数据采集(转)
    通过PHP实现浏览器点击下载TXT文档(转)
    Linux 文件颜色的含义
    如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件【转】
    X11VNC:让Windows可以远程管理Ubuntu桌面
  • 原文地址:https://www.cnblogs.com/sjqq/p/7965888.html
Copyright © 2011-2022 走看看