Browse Source

Bugfixes for Image Placement, Formated Text, ...

pull/584/head
jkuehner 11 years ago
parent
commit
b33f8cf0da
  1. 12
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs
  2. 4
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ResizeThumb.cs
  3. 6
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs
  4. 101
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/BorderForImageControl.cs
  5. 9
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/CanvasPlacementSupport.cs
  6. 14
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs
  7. 8
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/GridPlacementSupport.cs
  8. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/MarginHandleExtension.cs
  9. 4
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs
  10. 2
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenu.xaml.cs
  11. BIN
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-underline.png
  12. BIN
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/paint-can-color.png
  13. 6
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ModelTools.cs
  14. 830
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/FormatedTextEditor/FormatedTextEditor.xaml
  15. 19
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/FormatedTextEditor/FormatedTextEditor.xaml.cs
  16. 7
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj
  17. 3
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Adorners/AdornerPanel.cs
  18. 16
      src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PlacementOperation.cs

12
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/AdornerLayer.cs

@ -229,13 +229,13 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
//Fix Adorner Display of Image (or maybe other components...) //Fix Adorner Display of Image (or maybe other components...)
var size = adorner.DesiredSize; var size = adorner.DesiredSize;
if (size.Height==0 && size.Width==0 && adorner.AdornedElement is FrameworkElement) //if (size.Height==0 && size.Width==0 && adorner.AdornedElement is FrameworkElement)
size = new Size(((FrameworkElement)adorner.AdornedElement).Width, ((FrameworkElement)adorner.AdornedElement).Height); // size = new Size(((FrameworkElement)adorner.AdornedElement).Width, ((FrameworkElement)adorner.AdornedElement).Height);
if (double.IsNaN(size.Width)) //if (double.IsNaN(size.Width))
size.Width = 0; // size.Width = 0;
if (double.IsNaN(size.Height)) //if (double.IsNaN(size.Height))
size.Height = 0; // size.Height = 0;
adorner.Arrange(new Rect(new Point(0, 0), size)); adorner.Arrange(new Rect(new Point(0, 0), size));
} }

4
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Controls/ResizeThumb.cs

@ -90,9 +90,9 @@ namespace ICSharpCode.WpfDesign.Designer.Controls
AdornerPanel parent = this.Parent as AdornerPanel; AdornerPanel parent = this.Parent as AdornerPanel;
if (parent != null && parent.AdornedElement != null) { if (parent != null && parent.AdornedElement != null) {
if (checkWidth) if (checkWidth)
this.ResizeThumbVisible = parent.AdornedElement.RenderSize.Width > 14; this.ResizeThumbVisible = PlacementOperation.GetRealElementSize(parent.AdornedElement).Width > 14;
else if (checkHeight) else if (checkHeight)
this.ResizeThumbVisible = parent.AdornedElement.RenderSize.Height > 14; this.ResizeThumbVisible = PlacementOperation.GetRealElementSize(parent.AdornedElement).Height > 14;
} }
return base.ArrangeOverride(arrangeBounds); return base.ArrangeOverride(arrangeBounds);
} }

6
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/DesignPanel.cs

@ -102,8 +102,8 @@ namespace ICSharpCode.WpfDesign.Designer
return result; return result;
} }
/// <summary> /// <summary>
/// Performs a hit test on the design surface, raising <paramref name="callback"/> for each match. /// Performs a hit test on the design surface, raising <paramref name="callback"/> for each match.
/// Hit testing continues while the callback returns true. /// Hit testing continues while the callback returns true.
/// </summary> /// </summary>
@ -119,7 +119,7 @@ namespace ICSharpCode.WpfDesign.Designer
HitTestFilterCallback filterBehavior = CustomHitTestFilterBehavior ?? FilterHitTestInvisibleElements; HitTestFilterCallback filterBehavior = CustomHitTestFilterBehavior ?? FilterHitTestInvisibleElements;
CustomHitTestFilterBehavior = null; CustomHitTestFilterBehavior = null;
hitTestElements.Clear(); hitTestElements.Clear();
if (testAdorners) { if (testAdorners) {
RunHitTest( RunHitTest(

101
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/BorderForImageControl.cs

@ -0,0 +1,101 @@
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using ICSharpCode.WpfDesign.Adorners;
using ICSharpCode.WpfDesign.Designer.Controls;
using ICSharpCode.WpfDesign.Extensions;
namespace ICSharpCode.WpfDesign.Designer.Extensions
{
[ExtensionFor(typeof(Image))]
public class BorderForImageControl : PermanentAdornerProvider
{
AdornerPanel adornerPanel;
AdornerPanel cachedAdornerPanel;
protected override void OnInitialized()
{
base.OnInitialized();
UpdateAdorner();
}
void UpdateAdorner()
{
var element = ExtendedItem.Component as UIElement;
if (element != null) {
//if (element.IsVisible) {
CreateAdorner();
//}
//else {
// RemoveAdorner();
//}
}
}
private void CreateAdorner()
{
if (adornerPanel == null) {
if (cachedAdornerPanel == null) {
cachedAdornerPanel = new AdornerPanel();
cachedAdornerPanel.Order = AdornerOrder.Background;
var border = new Border();
border.BorderThickness = new Thickness(1);
border.BorderBrush = new SolidColorBrush(Color.FromRgb(0xCC, 0xCC, 0xCC));
border.Background = Brushes.Transparent;
border.IsHitTestVisible = true;
border.MouseDown += border_MouseDown;
AdornerPanel.SetPlacement(border, AdornerPlacement.FillContent);
cachedAdornerPanel.Children.Add(border);
}
adornerPanel = cachedAdornerPanel;
Adorners.Add(adornerPanel);
}
}
void border_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (!Keyboard.IsKeyDown(Key.LeftAlt) && ((Image) this.ExtendedItem.View).Source == null)
{
e.Handled = true;
this.ExtendedItem.Services.Selection.SetSelectedComponents(new DesignItem[] {this.ExtendedItem},
SelectionTypes.Auto);
}
}
private void RemoveAdorner()
{
if (adornerPanel != null) {
Adorners.Remove(adornerPanel);
adornerPanel = null;
}
}
}
}

9
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/CanvasPlacementSupport.cs

@ -70,23 +70,20 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (IsPropertySet(child, Canvas.LeftProperty) || !IsPropertySet(child, Canvas.RightProperty)) { if (IsPropertySet(child, Canvas.LeftProperty) || !IsPropertySet(child, Canvas.RightProperty)) {
x = GetCanvasProperty(child, Canvas.LeftProperty); x = GetCanvasProperty(child, Canvas.LeftProperty);
} else { } else {
x = extendedComponent.ActualWidth - GetCanvasProperty(child, Canvas.RightProperty) - child.RenderSize.Width; x = extendedComponent.ActualWidth - GetCanvasProperty(child, Canvas.RightProperty) - PlacementOperation.GetRealElementSize(child).Width;
} }
if (IsPropertySet(child, Canvas.TopProperty) || !IsPropertySet(child, Canvas.BottomProperty)) { if (IsPropertySet(child, Canvas.TopProperty) || !IsPropertySet(child, Canvas.BottomProperty)) {
y = GetCanvasProperty(child, Canvas.TopProperty); y = GetCanvasProperty(child, Canvas.TopProperty);
} else { } else {
y = extendedComponent.ActualHeight - GetCanvasProperty(child, Canvas.BottomProperty) - child.RenderSize.Height; y = extendedComponent.ActualHeight - GetCanvasProperty(child, Canvas.BottomProperty) - PlacementOperation.GetRealElementSize(child).Height;
} }
var p = new Point(x, y); var p = new Point(x, y);
//Fixes, Empty Image Resized to 0 //Fixes, Empty Image Resized to 0
//return new Rect(p, child.RenderSize); //return new Rect(p, child.RenderSize);
var size = item.View.RenderSize; return new Rect(p, PlacementOperation.GetRealElementSize(item.View));
if (item.View is FrameworkElement)
size = new Size(((FrameworkElement)item.View).Width, ((FrameworkElement)item.View).Height);
return new Rect(p, size);
} }
public override void SetPosition(PlacementInformation info) public override void SetPosition(PlacementInformation info)

14
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/DefaultPlacementBehavior.cs

@ -89,10 +89,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
var p = item.View.TranslatePoint(new Point(), operation.CurrentContainer.View); var p = item.View.TranslatePoint(new Point(), operation.CurrentContainer.View);
//Fixes, Empty Image Resized to 0 //Fixes, Empty Image Resized to 0
//return new Rect(p, item.View.RenderSize); //return new Rect(p, item.View.RenderSize);
var size = item.View.RenderSize;
if (item.View is FrameworkElement) return new Rect(p, PlacementOperation.GetRealElementSize(item.View));
size = new Size(((FrameworkElement) item.View).Width, ((FrameworkElement) item.View).Height);
return new Rect(p, size);
} }
public virtual void BeforeSetPosition(PlacementOperation operation) public virtual void BeforeSetPosition(PlacementOperation operation)
@ -101,7 +99,8 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
public virtual void SetPosition(PlacementInformation info) public virtual void SetPosition(PlacementInformation info)
{ {
ModelTools.Resize(info.Item, info.Bounds.Width, info.Bounds.Height); if (info.Operation.Type != PlacementType.Move)
ModelTools.Resize(info.Item, info.Bounds.Width, info.Bounds.Height);
} }
public virtual bool CanLeaveContainer(PlacementOperation operation) public virtual bool CanLeaveContainer(PlacementOperation operation)
@ -163,7 +162,10 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
return false; return false;
} }
} }
if (ExtendedItem.ContentProperty.ReturnType == typeof(string))
return false;
if (!ExtendedItem.ContentProperty.IsSet) if (!ExtendedItem.ContentProperty.IsSet)
return true; return true;

8
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/GridPlacementSupport.cs

@ -220,13 +220,13 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
if (ha == HorizontalAlignment.Stretch) if (ha == HorizontalAlignment.Stretch)
info.Item.Properties[FrameworkElement.WidthProperty].Reset(); info.Item.Properties[FrameworkElement.WidthProperty].Reset();
else //else
info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width); // info.Item.Properties[FrameworkElement.WidthProperty].SetValue(info.Bounds.Width);
if (va == VerticalAlignment.Stretch) if (va == VerticalAlignment.Stretch)
info.Item.Properties[FrameworkElement.HeightProperty].Reset(); info.Item.Properties[FrameworkElement.HeightProperty].Reset();
else //else
info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height); // info.Item.Properties[FrameworkElement.HeightProperty].SetValue(info.Bounds.Height);
} }
public override void LeaveContainer(PlacementOperation operation) public override void LeaveContainer(PlacementOperation operation)

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/MarginHandleExtension.cs

@ -82,7 +82,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
var margin = (Thickness) this.ExtendedItem.Properties[FrameworkElement.MarginProperty].ValueOnInstance; var margin = (Thickness) this.ExtendedItem.Properties[FrameworkElement.MarginProperty].ValueOnInstance;
var point = this.ExtendedItem.View.TranslatePoint(new Point(), _grid); var point = this.ExtendedItem.View.TranslatePoint(new Point(), _grid);
var position = new Rect(point, this.ExtendedItem.View.RenderSize); var position = new Rect(point, PlacementOperation.GetRealElementSize(this.ExtendedItem.View));
MarginHandle handle = null; MarginHandle handle = null;
if (sender is MarginHandle) if (sender is MarginHandle)
handle = sender as MarginHandle; handle = sender as MarginHandle;

4
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/SnaplinePlacementBehavior.cs

@ -279,6 +279,10 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
void DrawLine(double x1, double y1, double x2, double y2) void DrawLine(double x1, double y1, double x2, double y2)
{ {
if (double.IsInfinity(x1) || double.IsNaN(x1) || double.IsInfinity(y1) || double.IsNaN(y1) ||
double.IsInfinity(x2) || double.IsNaN(x2) || double.IsInfinity(y2) || double.IsNaN(y2))
return;
var line1 = new Line() { var line1 = new Line() {
X1 = x1, X1 = x1,
Y1 = y1, Y1 = y1,

2
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Extensions/TextBlockRightClickContextMenu.xaml.cs

@ -50,7 +50,7 @@ namespace ICSharpCode.WpfDesign.Designer.Extensions
var dlg = new Window() var dlg = new Window()
{ {
Content = new FormatedTextEditor(designItem), Content = new FormatedTextEditor(designItem),
Width = 400, Width = 440,
Height = 200, Height = 200,
WindowStyle = WindowStyle.ToolWindow, WindowStyle = WindowStyle.ToolWindow,
Owner = ((DesignPanel) designItem.Context.Services.DesignPanel).TryFindParent<Window>(), Owner = ((DesignPanel) designItem.Context.Services.DesignPanel).TryFindParent<Window>(),

BIN
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/edit-underline.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

BIN
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/Images/paint-can-color.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

6
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/ModelTools.cs

@ -154,10 +154,10 @@ namespace ICSharpCode.WpfDesign.Designer
if (newS.HasValue) if (newS.HasValue)
{ {
if (!(s.Width > 0) && newS.Value.Width > 0) if (!(s.Width > 5) && newS.Value.Width > 0)
s.Width = newS.Value.Width; s.Width = newS.Value.Width;
if (!(s.Height > 0) && newS.Value.Height > 0) if (!(s.Height > 5) && newS.Value.Height > 0)
s.Height = newS.Value.Height; s.Height = newS.Value.Height;
} }
@ -187,7 +187,7 @@ namespace ICSharpCode.WpfDesign.Designer
return element.RenderSize.Height; return element.RenderSize.Height;
else else
return v; return v;
} }
public static void Resize(DesignItem item, double newWidth, double newHeight) public static void Resize(DesignItem item, double newWidth, double newHeight)
{ {

830
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/FormatedTextEditor/FormatedTextEditor.xaml

@ -4,17 +4,829 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase"
mc:Ignorable="d" d:DesignWidth="410" d:DesignHeight="259" > mc:Ignorable="d" d:DesignWidth="410" d:DesignHeight="259" >
<UserControl.Resources>
<CollectionViewSource x:Key="Fonts" Source="{Binding Source={x:Static Fonts.SystemFontFamilies}}">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="Source" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
<Style x:Key="RichTextBoxFormatBarStyle" TargetType="{x:Type xctk:RichTextBoxFormatBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type xctk:RichTextBoxFormatBar}">
<ControlTemplate.Resources>
<Style x:Key="{x:Type Separator}" TargetType="{x:Type Separator}">
<Style.BasedOn>
<Style TargetType="{x:Type Separator}">
<Setter Property="Background" Value="#FFC6C7C6"/>
<Setter Property="MinWidth" Value="1"/>
<Setter Property="MinHeight" Value="1"/>
<Setter Property="Margin" Value="2"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Separator}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style.BasedOn>
</Style>
</ControlTemplate.Resources>
<Border BorderBrush="Gray" BorderThickness="1" Background="WhiteSmoke" CornerRadius="3">
<Grid Margin="5,0,5,5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Thumb x:Name="_dragWidget" Visibility="Collapsed" Height="10">
<Thumb.Template>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border Background="Transparent" Cursor="Hand" ToolTip="Click to Drag">
<StackPanel VerticalAlignment="Center" Width="75">
<Line Margin="0.5" Stretch="Fill" SnapsToDevicePixels="True" Stroke="Gray" StrokeThickness="1" StrokeDashArray="1 2" X1="0" X2="1"/>
<Line Margin="0.5" Stretch="Fill" SnapsToDevicePixels="True" Stroke="Gray" StrokeThickness="1" StrokeDashArray="1 2" X1="0" X2="1"/>
<Line Margin="0.5" Stretch="Fill" SnapsToDevicePixels="True" Stroke="Gray" StrokeThickness="1" StrokeDashArray="1 2" X1="0" X2="1"/>
</StackPanel>
</Border>
</ControlTemplate>
</Thumb.Template>
</Thumb>
<StackPanel Grid.Row="1">
<StackPanel Orientation="Horizontal">
<ComboBox x:Name="_cmbFontFamilies" IsEditable="True" ToolTip="Font Family" Width="100">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock FontFamily="{Binding}" Text="{Binding}" ToolTip="{Binding}" />
</DataTemplate>
</ComboBox.ItemTemplate>
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
<ComboBox x:Name="_cmbFontSizes" IsEditable="True" ToolTip="Font Size" Margin="3,0,0,0" Width="43"/>
<ToggleButton x:Name="_btnBullets" Visibility="Collapsed" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.ToggleBullets" ToolTip="Bullets">
</ToggleButton>
<ToggleButton x:Name="_btnNumbers" Visibility="Collapsed" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.ToggleNumbering" ToolTip="Numbering">
</ToggleButton>
</StackPanel>
<StackPanel Margin="0,3,0,0" Orientation="Horizontal">
<ToggleButton x:Name="_btnBold" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.ToggleBold" ToolTip="Bold">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<StackPanel x:Name="StackPanel" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<ContentPresenter x:Name="Content" RenderOptions.BitmapScalingMode="NearestNeighbor" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="Center"/>
</StackPanel>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFEFBF4" Offset="0"/>
<GradientStop Color="#FFFDE7CE" Offset="0.19"/>
<GradientStop Color="#FFFDDEB8" Offset="0.39"/>
<GradientStop Color="#FFFFCE6B" Offset="0.39"/>
<GradientStop Color="#FFFFDE9A" Offset="0.79"/>
<GradientStop Color="#FFFFEBAA" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFFFB700"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="Content" Value="0.5"/>
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFDCA0" Offset="0"/>
<GradientStop Color="#FFFFD692" Offset="0.18"/>
<GradientStop Color="#FFFFC45D" Offset="0.39"/>
<GradientStop Color="#FFFFD178" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE3C085" Offset="0"/>
<GradientStop Color="#FFF4CC89" Offset="0.19"/>
<GradientStop Color="#FFF5C777" Offset="0.36"/>
<GradientStop Color="#FFF5BB56" Offset="0.36"/>
<GradientStop Color="#FFF4CE9A" Offset="0.79"/>
<GradientStop Color="#FFF3E28D" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
<Image>
<Image.Source>
<BitmapImage UriSource="pack://application:,,,/Xceed.Wpf.Toolkit;v2.2.0.0;component/RichTextBoxFormatBar/Images/Bold16.png"/>
</Image.Source>
</Image>
</ToggleButton>
<ToggleButton x:Name="_btnItalic" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.ToggleItalic" ToolTip="Italic">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<StackPanel x:Name="StackPanel" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<ContentPresenter x:Name="Content" RenderOptions.BitmapScalingMode="NearestNeighbor" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="Center"/>
</StackPanel>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFEFBF4" Offset="0"/>
<GradientStop Color="#FFFDE7CE" Offset="0.19"/>
<GradientStop Color="#FFFDDEB8" Offset="0.39"/>
<GradientStop Color="#FFFFCE6B" Offset="0.39"/>
<GradientStop Color="#FFFFDE9A" Offset="0.79"/>
<GradientStop Color="#FFFFEBAA" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFFFB700"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="Content" Value="0.5"/>
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFDCA0" Offset="0"/>
<GradientStop Color="#FFFFD692" Offset="0.18"/>
<GradientStop Color="#FFFFC45D" Offset="0.39"/>
<GradientStop Color="#FFFFD178" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE3C085" Offset="0"/>
<GradientStop Color="#FFF4CC89" Offset="0.19"/>
<GradientStop Color="#FFF5C777" Offset="0.36"/>
<GradientStop Color="#FFF5BB56" Offset="0.36"/>
<GradientStop Color="#FFF4CE9A" Offset="0.79"/>
<GradientStop Color="#FFF3E28D" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
<Image>
<Image.Source>
<BitmapImage UriSource="pack://application:,,,/Xceed.Wpf.Toolkit;v2.2.0.0;component/RichTextBoxFormatBar/Images/Italic16.png"/>
</Image.Source>
</Image>
</ToggleButton>
<ToggleButton x:Name="_btnUnderline" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.ToggleUnderline" ToolTip="Underline">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<StackPanel x:Name="StackPanel" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<ContentPresenter x:Name="Content" RenderOptions.BitmapScalingMode="NearestNeighbor" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="Center"/>
</StackPanel>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFEFBF4" Offset="0"/>
<GradientStop Color="#FFFDE7CE" Offset="0.19"/>
<GradientStop Color="#FFFDDEB8" Offset="0.39"/>
<GradientStop Color="#FFFFCE6B" Offset="0.39"/>
<GradientStop Color="#FFFFDE9A" Offset="0.79"/>
<GradientStop Color="#FFFFEBAA" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFFFB700"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="Content" Value="0.5"/>
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFDCA0" Offset="0"/>
<GradientStop Color="#FFFFD692" Offset="0.18"/>
<GradientStop Color="#FFFFC45D" Offset="0.39"/>
<GradientStop Color="#FFFFD178" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE3C085" Offset="0"/>
<GradientStop Color="#FFF4CC89" Offset="0.19"/>
<GradientStop Color="#FFF5C777" Offset="0.36"/>
<GradientStop Color="#FFF5BB56" Offset="0.36"/>
<GradientStop Color="#FFF4CE9A" Offset="0.79"/>
<GradientStop Color="#FFF3E28D" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
<Image>
<Image.Source>
<BitmapImage UriSource="pack://application:,,,/Xceed.Wpf.Toolkit;v2.2.0.0;component/RichTextBoxFormatBar/Images/Underline16.png"/>
</Image.Source>
</Image>
</ToggleButton>
<ToggleButton ToolTip="ToggleStrikethrough" Click="StrikeThroughButton_Click">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<StackPanel x:Name="StackPanel" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<ContentPresenter x:Name="Content" RenderOptions.BitmapScalingMode="NearestNeighbor" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="Center"/>
</StackPanel>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFEFBF4" Offset="0"/>
<GradientStop Color="#FFFDE7CE" Offset="0.19"/>
<GradientStop Color="#FFFDDEB8" Offset="0.39"/>
<GradientStop Color="#FFFFCE6B" Offset="0.39"/>
<GradientStop Color="#FFFFDE9A" Offset="0.79"/>
<GradientStop Color="#FFFFEBAA" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFFFB700"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" TargetName="Content" Value="0.5"/>
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFDCA0" Offset="0"/>
<GradientStop Color="#FFFFD692" Offset="0.18"/>
<GradientStop Color="#FFFFC45D" Offset="0.39"/>
<GradientStop Color="#FFFFD178" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE3C085" Offset="0"/>
<GradientStop Color="#FFF4CC89" Offset="0.19"/>
<GradientStop Color="#FFF5C777" Offset="0.36"/>
<GradientStop Color="#FFF5BB56" Offset="0.36"/>
<GradientStop Color="#FFF4CE9A" Offset="0.79"/>
<GradientStop Color="#FFF3E28D" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
<Image Source="/ICSharpCode.WpfDesign.Designer;component/Images/edit-strike.png" />
</ToggleButton>
<Separator/>
<RadioButton x:Name="_btnAlignLeft" Visibility="Collapsed" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.AlignLeft" ToolTip="Align Left">
</RadioButton>
<RadioButton x:Name="_btnAlignCenter" Visibility="Collapsed" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.AlignCenter" ToolTip="Align Center">
</RadioButton>
<RadioButton x:Name="_btnAlignRight" Visibility="Collapsed" CommandTarget="{Binding Target, RelativeSource={RelativeSource TemplatedParent}}" Command="EditingCommands.AlignRight" ToolTip="Align Right">
</RadioButton>
<xctk:ColorPicker x:Name="_cmbFontBackgroundColor" BorderThickness="0" ToolTip="Text Highlight Color">
<xctk:ColorPicker.ButtonStyle>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="White"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid>
<Image Height="16" Width="16">
<Image.Source>
<BitmapImage UriSource="pack://application:,,,/Xceed.Wpf.Toolkit;v2.2.0.0;component/RichTextBoxFormatBar/Images/TextHighlightColorPicker16.png"/>
</Image.Source>
</Image>
<Rectangle Height="4" Margin="0,12,0,0" Grid.Row="1">
<Rectangle.Fill>
<Binding Path="SelectedColor" RelativeSource="{RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type xctk:ColorPicker}}">
<Binding.Converter>
<xctk:ColorToSolidColorBrushConverter/>
</Binding.Converter>
</Binding>
</Rectangle.Fill>
</Rectangle>
</Grid>
<Path Grid.Column="1" Data="M0,1C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1z" Fill="Black" Height="4" Width="7"/>
</Grid>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFEFBF4" Offset="0"/>
<GradientStop Color="#FFFDE7CE" Offset="0.19"/>
<GradientStop Color="#FFFDDEB8" Offset="0.39"/>
<GradientStop Color="#FFFFCE6B" Offset="0.39"/>
<GradientStop Color="#FFFFDE9A" Offset="0.79"/>
<GradientStop Color="#FFFFEBAA" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFFFB700"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFDCA0" Offset="0"/>
<GradientStop Color="#FFFFD692" Offset="0.18"/>
<GradientStop Color="#FFFFC45D" Offset="0.39"/>
<GradientStop Color="#FFFFD178" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE3C085" Offset="0"/>
<GradientStop Color="#FFF4CC89" Offset="0.19"/>
<GradientStop Color="#FFF5C777" Offset="0.36"/>
<GradientStop Color="#FFF5BB56" Offset="0.36"/>
<GradientStop Color="#FFF4CE9A" Offset="0.79"/>
<GradientStop Color="#FFF3E28D" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</xctk:ColorPicker.ButtonStyle>
</xctk:ColorPicker>
<xctk:ColorPicker x:Name="_cmbFontColor" BorderThickness="0" ToolTip="Font Color">
<xctk:ColorPicker.ButtonStyle>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Height" Value="22"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="ToolTipService.InitialShowDelay" Value="900"/>
<Setter Property="ToolTipService.ShowDuration" Value="20000"/>
<Setter Property="ToolTipService.BetweenShowDelay" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid SnapsToDevicePixels="True">
<Border x:Name="OuterBorder" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2"/>
<Border x:Name="MiddleBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2">
<Border x:Name="InnerBorder" BorderBrush="Transparent" BorderThickness="{TemplateBinding BorderThickness}" Background="Transparent" CornerRadius="2" Padding="{TemplateBinding Padding}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid>
<Image Height="16" Width="16">
<Image.Source>
<BitmapImage UriSource="pack://application:,,,/Xceed.Wpf.Toolkit;v2.2.0.0;component/RichTextBoxFormatBar/Images/FontColorPicker16.png"/>
</Image.Source>
</Image>
<Rectangle Height="4" Margin="0,12,0,0" Grid.Row="1">
<Rectangle.Fill>
<Binding Path="SelectedColor" RelativeSource="{RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type xctk:ColorPicker}}">
<Binding.Converter>
<xctk:ColorToSolidColorBrushConverter/>
</Binding.Converter>
</Binding>
</Rectangle.Fill>
</Rectangle>
</Grid>
<Path Grid.Column="1" Data="M0,1C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1z" Fill="Black" Height="4" Width="7"/>
</Grid>
</Border>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFEFBF4" Offset="0"/>
<GradientStop Color="#FFFDE7CE" Offset="0.19"/>
<GradientStop Color="#FFFDDEB8" Offset="0.39"/>
<GradientStop Color="#FFFFCE6B" Offset="0.39"/>
<GradientStop Color="#FFFFDE9A" Offset="0.79"/>
<GradientStop Color="#FFFFEBAA" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFFFB700"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="#80FFFFFF"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="TextElement.Foreground" TargetName="OuterBorder" Value="#FF9E9E9E"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFFFDCA0" Offset="0"/>
<GradientStop Color="#FFFFD692" Offset="0.18"/>
<GradientStop Color="#FFFFC45D" Offset="0.39"/>
<GradientStop Color="#FFFFD178" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE7CBAD" Offset="0"/>
<GradientStop Color="#FFF7D7B5" Offset="0.1"/>
<GradientStop Color="#FFFFD38C" Offset="0.36"/>
<GradientStop Color="#FFFFC75A" Offset="0.36"/>
<GradientStop Color="#FFFFEFA5" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="OuterBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFE3C085" Offset="0"/>
<GradientStop Color="#FFF4CC89" Offset="0.19"/>
<GradientStop Color="#FFF5C777" Offset="0.36"/>
<GradientStop Color="#FFF5BB56" Offset="0.36"/>
<GradientStop Color="#FFF4CE9A" Offset="0.79"/>
<GradientStop Color="#FFF3E28D" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="OuterBorder" Value="#FFC29B29"/>
<Setter Property="BorderBrush" TargetName="InnerBorder" Value="Transparent"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True"/>
<Condition Property="IsMouseOver" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MiddleBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#40FFFEFE" Offset="0"/>
<GradientStop Color="#40FFFEFE" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.39"/>
<GradientStop Color="#20FFCE68" Offset="0.69"/>
<GradientStop Color="#10FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</xctk:ColorPicker.ButtonStyle>
</xctk:ColorPicker>
</StackPanel>
</StackPanel>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="IsTabStop" Value="False"/>
</Style>
</UserControl.Resources>
<Grid> <Grid>
<xctk:RichTextBox Margin="10,76,10,10" x:Name="richTextBox"> <xctk:RichTextBox Margin="10,74,10,10" x:Name="richTextBox">
<xctk:RichTextBoxFormatBarManager.FormatBar>
<xctk:RichTextBoxFormatBar />
</xctk:RichTextBoxFormatBarManager.FormatBar>
</xctk:RichTextBox> </xctk:RichTextBox>
<!--<xctk:RichTextBoxFormatBar Target="{Binding ElementName=richTextBox}" Margin="10,10,105,188" />-->
<Button Content="Ok" Margin="0,10,10,0" HorizontalAlignment="Right" Width="90" Height="28" VerticalAlignment="Top" Click="Ok_Click" /> <xctk:RichTextBoxFormatBar x:Name="formatBar" Target="{Binding ElementName=richTextBox}" Margin="10,10,0,0" Style="{DynamicResource RichTextBoxFormatBarStyle}" HorizontalAlignment="Left" Width="295" Height="59" VerticalAlignment="Top" />
<Button Content="Cancel" Margin="0,43,10,0" HorizontalAlignment="Right" Width="90" Height="28" VerticalAlignment="Top" Click="Cancel_Click" />
<Button Content="Ok" Margin="0,10,10,0" HorizontalAlignment="Right" Width="90" Height="20" VerticalAlignment="Top" Click="Ok_Click" />
<Button Content="Cancel" Margin="0,34,10,0" HorizontalAlignment="Right" Width="90" Height="20" VerticalAlignment="Top" Click="Cancel_Click" />
</Grid> </Grid>
</UserControl> </UserControl>

19
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/Editors/FormatedTextEditor/FormatedTextEditor.xaml.cs

@ -50,7 +50,7 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors.FormatedTextEditor
richTextBox.Document.Blocks.Add(paragraph); richTextBox.Document.Blocks.Add(paragraph);
richTextBox.Foreground = tb.Foreground; richTextBox.Foreground = tb.Foreground;
richTextBox.Background = tb.Background; richTextBox.Background = tb.Background;
} }
private void GetDesignItems(TextElementCollection<Block> blocks, List<DesignItem> list) private void GetDesignItems(TextElementCollection<Block> blocks, List<DesignItem> list)
@ -190,5 +190,22 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid.Editors.FormatedTextEditor
{ {
this.TryFindParent<Window>().Close(); this.TryFindParent<Window>().Close();
} }
private void StrikeThroughButton_Click(object sender, RoutedEventArgs e)
{
TextRange range = new TextRange(richTextBox.Selection.Start, richTextBox.Selection.End);
TextDecorationCollection tdc = (TextDecorationCollection) richTextBox.Selection.GetPropertyValue(Inline.TextDecorationsProperty);
if (tdc == null || !tdc.Equals(TextDecorations.Strikethrough))
{
tdc = TextDecorations.Strikethrough;
}
else
{
tdc = null;
}
range.ApplyPropertyValue(Inline.TextDecorationsProperty, tdc);
}
} }
} }

7
src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/WpfDesign.Designer.csproj

@ -85,6 +85,7 @@
</Compile> </Compile>
<Compile Include="ArrangeDirection.cs" /> <Compile Include="ArrangeDirection.cs" />
<Compile Include="Controls\RenderTransformOriginThumb.cs" /> <Compile Include="Controls\RenderTransformOriginThumb.cs" />
<Compile Include="Extensions\BorderForImageControl.cs" />
<Compile Include="Extensions\PartialPanelSelectionHandler.cs" /> <Compile Include="Extensions\PartialPanelSelectionHandler.cs" />
<Compile Include="Extensions\TextBlockRightClickContextMenu.xaml.cs"> <Compile Include="Extensions\TextBlockRightClickContextMenu.xaml.cs">
<DependentUpon>TextBlockRightClickContextMenu.xaml</DependentUpon> <DependentUpon>TextBlockRightClickContextMenu.xaml</DependentUpon>
@ -438,4 +439,10 @@
<ItemGroup> <ItemGroup>
<Resource Include="Images\grid.png" /> <Resource Include="Images\grid.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Resource Include="Images\edit-underline.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Images\paint-can-color.png" />
</ItemGroup>
</Project> </Project>

3
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/Adorners/AdornerPanel.cs

@ -137,7 +137,8 @@ namespace ICSharpCode.WpfDesign.Adorners
e.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); e.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
} }
} }
return this.AdornedElement.RenderSize;
return PlacementOperation.GetRealElementSize(this.AdornedElement);
} else { } else {
return base.MeasureOverride(availableSize); return base.MeasureOverride(availableSize);
} }

16
src/AddIns/DisplayBindings/WpfDesign/WpfDesign/Project/PlacementOperation.cs

@ -204,7 +204,21 @@ namespace ICSharpCode.WpfDesign
this.changeGroup = items[0].Context.OpenGroup(type.ToString(), items); this.changeGroup = items[0].Context.OpenGroup(type.ToString(), items);
} }
/// <summary>
/// The Size wich the Element really should have (even if its smaller Rendered (like emtpy Image!))
/// </summary>
/// <param name="element"></param>
/// <returns></returns>
public static Size GetRealElementSize(UIElement element)
{
var size = element.RenderSize;
if (element is FrameworkElement && !double.IsNaN(((FrameworkElement)element).Width) && !double.IsNaN(((FrameworkElement)element).Height))
size = new Size(((FrameworkElement)element).Width, ((FrameworkElement)element).Height);
return size;
}
/// <summary> /// <summary>
/// Gets the placement behavior associated with the specified items. /// Gets the placement behavior associated with the specified items.
/// </summary> /// </summary>

Loading…
Cancel
Save