Browse Source

Styled ToggleButton.

pull/10/head
Steven Kirk 12 years ago
parent
commit
9358aa8527
  1. 1
      Perspex.Themes.Default/DefaultTheme.cs
  2. 1
      Perspex.Themes.Default/Perspex.Themes.Default.csproj
  3. 106
      Perspex.Themes.Default/ToggleButtonStyle.cs
  4. 9
      TestApplication/Program.cs

1
Perspex.Themes.Default/DefaultTheme.cs

@ -25,6 +25,7 @@ namespace Perspex.Themes.Default
this.Add(new TabItemStyle());
this.Add(new TabStripStyle());
this.Add(new TextBoxStyle());
this.Add(new ToggleButtonStyle());
this.Add(new TreeViewStyle());
this.Add(new TreeViewItemStyle());
this.Add(new WindowStyle());

1
Perspex.Themes.Default/Perspex.Themes.Default.csproj

@ -66,6 +66,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Compile Include="ToggleButtonStyle.cs" />
<Compile Include="ListBoxStyle.cs" />
<Compile Include="ListBoxItemStyle.cs" />
<Compile Include="WindowStyle.cs" />

106
Perspex.Themes.Default/ToggleButtonStyle.cs

@ -0,0 +1,106 @@
// -----------------------------------------------------------------------
// <copyright file="ToggleButtonStyle.cs" company="Steven Kirk">
// Copyright 2014 MIT Licence. See licence.md for more information.
// </copyright>
// -----------------------------------------------------------------------
namespace Perspex.Themes.Default
{
using System.Linq;
using Perspex.Controls;
using Perspex.Controls.Presenters;
using Perspex.Controls.Primitives;
using Perspex.Layout;
using Perspex.Media;
using Perspex.Styling;
public class ToggleButtonStyle : Styles
{
public ToggleButtonStyle()
{
this.AddRange(new[]
{
new Style(x => x.OfType<ToggleButton>())
{
Setters = new[]
{
new Setter(ToggleButton.TemplateProperty, ControlTemplate.Create<ToggleButton>(this.Template)),
new Setter(ToggleButton.HorizontalContentAlignmentProperty, HorizontalAlignment.Center),
new Setter(ToggleButton.VerticalContentAlignmentProperty, VerticalAlignment.Center),
},
},
new Style(x => x.OfType<ToggleButton>().Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.BackgroundProperty, new SolidColorBrush(0xffdddddd)),
new Setter(ToggleButton.BorderBrushProperty, new SolidColorBrush(0xff707070)),
new Setter(ToggleButton.BorderThicknessProperty, 2.0),
new Setter(ToggleButton.ForegroundProperty, new SolidColorBrush(0xff000000)),
},
},
new Style(x => x.OfType<ToggleButton>().Class(":checked").Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.BackgroundProperty, new SolidColorBrush(0xff7f7f7f)),
},
},
new Style(x => x.OfType<ToggleButton>().Class(":pointerover").Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.BackgroundProperty, new SolidColorBrush(0xffbee6fd)),
new Setter(ToggleButton.BorderBrushProperty, new SolidColorBrush(0xff3c7fb1)),
},
},
new Style(x => x.OfType<ToggleButton>().Class(":checked").Class(":pointerover").Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.BackgroundProperty, new SolidColorBrush(0xffa0a0a0)),
},
},
new Style(x => x.OfType<ToggleButton>().Class(":pointerover").Class(":pressed").Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.BackgroundProperty, new SolidColorBrush(0xffc4e5f6)),
},
},
new Style(x => x.OfType<ToggleButton>().Class(":pressed").Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.BorderBrushProperty, new SolidColorBrush(0xffff628b)),
},
},
new Style(x => x.OfType<ToggleButton>().Class(":disabled").Template().Id("border"))
{
Setters = new[]
{
new Setter(ToggleButton.ForegroundProperty, new SolidColorBrush(0xff7f7f7f)),
},
},
});
}
private Control Template(ToggleButton control)
{
Border border = new Border
{
Id = "border",
Padding = new Thickness(3),
Content = new ContentPresenter
{
[~ContentPresenter.ContentProperty] = control[~ToggleButton.ContentProperty],
[~ContentPresenter.HorizontalAlignmentProperty] = control[~ToggleButton.HorizontalContentAlignmentProperty],
[~ContentPresenter.VerticalAlignmentProperty] = control[~ToggleButton.VerticalContentAlignmentProperty],
},
[~Border.BackgroundProperty] = control[~ToggleButton.BackgroundProperty],
};
return border;
}
}
}

9
TestApplication/Program.cs

@ -185,6 +185,15 @@ namespace TestApplication
IsEnabled = false,
Background = new SolidColorBrush(0xcc119eda),
},
new ToggleButton
{
Content = "Toggle",
},
new ToggleButton
{
Content = "Disabled",
IsEnabled = false,
},
new CheckBox
{
Content = "Checkbox",

Loading…
Cancel
Save