Browse Source

ColorPicker: added transparent color swatch to Standard Colors. Fixed minor binding errors.

pull/1645/head
brianlagunas_cp 15 years ago
parent
commit
99f34fec54
  1. 7
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs
  2. 26
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/ColorToSolidColorBrushConverter.cs
  3. 2
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/InverseBoolConverter.cs
  4. 60
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml
  5. 1
      ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj

7
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/ColorPicker/ColorPicker.cs

@ -4,7 +4,6 @@ using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Controls.Primitives;
using System.Collections.ObjectModel;
using System.Reflection;
using System.Windows.Input;
namespace Microsoft.Windows.Controls
@ -241,15 +240,15 @@ namespace Microsoft.Windows.Controls
private static ObservableCollection<ColorItem> CreateStandardColors()
{
ObservableCollection<ColorItem> _standardColors = new ObservableCollection<ColorItem>();
_standardColors.Add(new ColorItem(Colors.Transparent, "Transparent"));
_standardColors.Add(new ColorItem(Colors.White, "White"));
_standardColors.Add(new ColorItem(Colors.Gray, "Gray"));
_standardColors.Add(new ColorItem(Colors.Black, "Black"));
_standardColors.Add(new ColorItem(Colors.Red, "Red"));
_standardColors.Add(new ColorItem(Colors.Green, "Geen"));
_standardColors.Add(new ColorItem(Colors.Green, "Green"));
_standardColors.Add(new ColorItem(Colors.Blue, "Blue"));
_standardColors.Add(new ColorItem(Colors.Yellow, "Yellow"));
_standardColors.Add(new ColorItem(Colors.Orange, "Orange"));
_standardColors.Add(new ColorItem(Colors.Brown, "Brown"));
_standardColors.Add(new ColorItem(Colors.Purple, "Purple"));
return _standardColors;
}
@ -260,7 +259,7 @@ namespace Microsoft.Windows.Controls
foreach (var item in ColorUtilities.KnownColors)
{
if (String.Compare(item.Key, "Transparent", false) != 0)
if (!String.Equals(item.Key, "Transparent"))
{
var colorItem = new ColorItem(item.Value, item.Key);
if (!_standardColors.Contains(colorItem))

26
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/ColorToSolidColorBrushConverter.cs

@ -0,0 +1,26 @@
using System;
using System.Windows.Data;
using System.Windows.Media;
namespace Microsoft.Windows.Controls.Core.Converters
{
public class ColorToSolidColorBrushConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
return new SolidColorBrush((Color)value);
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}

2
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Core/Converters/InverseBoolConverter.cs

@ -19,4 +19,4 @@ namespace Microsoft.Windows.Controls.Core.Converters
#endregion
}
}
}

60
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml

@ -581,6 +581,8 @@
<!-- ColorPicker -->
<!-- =============================================================================== -->
<coreConverters:ColorToSolidColorBrushConverter x:Key="ColorToSolidColorBrushConverter" />
<LinearGradientBrush x:Key="ColorPickerDarkBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
@ -597,6 +599,26 @@
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<DrawingBrush x:Key="CheckerBrush" Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile">
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="White">
<GeometryDrawing.Geometry>
<RectangleGeometry Rect="0,0 100,100" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="LightGray">
<GeometryDrawing.Geometry>
<GeometryGroup>
<RectangleGeometry Rect="0,0 50,50" />
<RectangleGeometry Rect="50,50 50,50" />
</GeometryGroup>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
<Style x:Key="ColorPaletteLisBoxStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="ToolTip" Value="{Binding Name}" />
<Setter Property="Template">
@ -622,14 +644,21 @@
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="ColorItemTemplate">
<Grid>
<Border BorderBrush="#FFC9CACA" BorderThickness="1" Margin="2,2,2,2" >
<Rectangle Width="14" Height="14">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Color}" />
</Rectangle.Fill>
<Rectangle.Style>
<Style TargetType="Rectangle">
<Setter Property="Fill" Value="{Binding Color, Converter={StaticResource ColorToSolidColorBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Name}" Value="Transparent">
<Setter Property="Fill" Value="{StaticResource CheckerBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</Border>
</Grid>
@ -691,7 +720,16 @@
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ColorDisplayStyle" TargetType="Border">
<Setter Property="Background" Value="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ColorToSolidColorBrushConverter}}" />
<Style.Triggers>
<DataTrigger Binding="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}" Value="Transparent">
<Setter Property="Background" Value="{StaticResource CheckerBrush}" />
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type local:ColorPicker}">
<Setter Property="BorderBrush" Value="{StaticResource ColorPickerDarkBorderBrush}" />
<Setter Property="BorderThickness" Value="1" />
@ -703,19 +741,11 @@
<Grid>
<ToggleButton x:Name="PART_ColorPickerToggleButton" Style="{TemplateBinding ButtonStyle}" MinHeight="22" ClickMode="Press" IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}" >
<Grid>
<Border x:Name="ColorOnly">
<Border.Background>
<SolidColorBrush Color="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}"/>
</Border.Background>
</Border>
<Border x:Name="ColorOnly" Style="{StaticResource ColorDisplayStyle}" />
<Border x:Name="ColorAndName" Background="White" Visibility="Hidden">
<StackPanel Orientation="Horizontal">
<Border HorizontalAlignment="Left" Width="20" Margin="2,1,4,1" >
<Border.Background>
<SolidColorBrush Color="{Binding SelectedColor, RelativeSource={RelativeSource TemplatedParent}}"/>
</Border.Background>
</Border>
<Border HorizontalAlignment="Left" Width="20" Margin="2,1,4,1" Style="{StaticResource ColorDisplayStyle}" BorderThickness="1" BorderBrush="#FFC9CACA" />
<TextBlock Text="{Binding SelectedColorText, RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Center" />
</StackPanel>
</Border>

1
ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj

@ -75,6 +75,7 @@
<Compile Include="ColorPicker\ColorItem.cs" />
<Compile Include="ColorPicker\ColorPicker.cs" />
<Compile Include="ColorPicker\ColorUtilities.cs" />
<Compile Include="Core\Converters\ColorToSolidColorBrushConverter.cs" />
<Compile Include="Core\Converters\InverseBoolConverter.cs" />
<Compile Include="DateTimeUpDown\DateTimeFormat.cs" />
<Compile Include="DateTimeUpDown\DateTimeInfo.cs" />

Loading…
Cancel
Save