wpf自定义colorpicker

2017-08-31 19:23:21来源:CSDN作者:wujingang人点击

分享

自定义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>

运行结果
这里写图片描述

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台