You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
9.5 KiB
275 lines
9.5 KiB
/************************************************************************
|
|
|
|
Extended WPF Toolkit
|
|
|
|
Copyright (C) 2010-2012 Xceed Software Inc.
|
|
|
|
This program is provided to you under the terms of the Microsoft Public
|
|
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
|
|
|
|
This program can be provided to you by Xceed Software Inc. under a
|
|
proprietary commercial license agreement for use in non-Open Source
|
|
projects. The commercial version of Extended WPF Toolkit also includes
|
|
priority technical support, commercial updates, and many additional
|
|
useful WPF controls if you license Xceed Business Suite for WPF.
|
|
|
|
Visit http://xceed.com and follow @datagrid on Twitter.
|
|
|
|
**********************************************************************/
|
|
|
|
using System;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
|
|
namespace Xceed.Wpf.Toolkit.Chromes
|
|
{
|
|
public class ButtonChrome : ContentControl
|
|
{
|
|
#region CornerRadius
|
|
|
|
public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.Register( "CornerRadius", typeof( CornerRadius ), typeof( ButtonChrome ), new UIPropertyMetadata( default( CornerRadius ), new PropertyChangedCallback( OnCornerRadiusChanged ) ) );
|
|
public CornerRadius CornerRadius
|
|
{
|
|
get
|
|
{
|
|
return ( CornerRadius )GetValue( CornerRadiusProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( CornerRadiusProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnCornerRadiusChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnCornerRadiusChanged( ( CornerRadius )e.OldValue, ( CornerRadius )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnCornerRadiusChanged( CornerRadius oldValue, CornerRadius newValue )
|
|
{
|
|
//we always want the InnerBorderRadius to be one less than the CornerRadius
|
|
CornerRadius newInnerCornerRadius = new CornerRadius( Math.Max( 0, newValue.TopLeft - 1 ),
|
|
Math.Max( 0, newValue.TopRight - 1 ),
|
|
Math.Max( 0, newValue.BottomRight - 1 ),
|
|
Math.Max( 0, newValue.BottomLeft - 1 ) );
|
|
|
|
InnerCornerRadius = newInnerCornerRadius;
|
|
}
|
|
|
|
#endregion //CornerRadius
|
|
|
|
#region InnerCornerRadius
|
|
|
|
public static readonly DependencyProperty InnerCornerRadiusProperty = DependencyProperty.Register( "InnerCornerRadius", typeof( CornerRadius ), typeof( ButtonChrome ), new UIPropertyMetadata( default( CornerRadius ), new PropertyChangedCallback( OnInnerCornerRadiusChanged ) ) );
|
|
public CornerRadius InnerCornerRadius
|
|
{
|
|
get
|
|
{
|
|
return ( CornerRadius )GetValue( InnerCornerRadiusProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( InnerCornerRadiusProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnInnerCornerRadiusChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnInnerCornerRadiusChanged( ( CornerRadius )e.OldValue, ( CornerRadius )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnInnerCornerRadiusChanged( CornerRadius oldValue, CornerRadius newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //InnerCornerRadius
|
|
|
|
#region RenderChecked
|
|
|
|
public static readonly DependencyProperty RenderCheckedProperty = DependencyProperty.Register( "RenderChecked", typeof( bool ), typeof( ButtonChrome ), new UIPropertyMetadata( false, OnRenderCheckedChanged ) );
|
|
public bool RenderChecked
|
|
{
|
|
get
|
|
{
|
|
return ( bool )GetValue( RenderCheckedProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( RenderCheckedProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnRenderCheckedChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnRenderCheckedChanged( ( bool )e.OldValue, ( bool )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnRenderCheckedChanged( bool oldValue, bool newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //RenderChecked
|
|
|
|
#region RenderEnabled
|
|
|
|
public static readonly DependencyProperty RenderEnabledProperty = DependencyProperty.Register( "RenderEnabled", typeof( bool ), typeof( ButtonChrome ), new UIPropertyMetadata( true, OnRenderEnabledChanged ) );
|
|
public bool RenderEnabled
|
|
{
|
|
get
|
|
{
|
|
return ( bool )GetValue( RenderEnabledProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( RenderEnabledProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnRenderEnabledChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnRenderEnabledChanged( ( bool )e.OldValue, ( bool )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnRenderEnabledChanged( bool oldValue, bool newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //RenderEnabled
|
|
|
|
#region RenderFocused
|
|
|
|
public static readonly DependencyProperty RenderFocusedProperty = DependencyProperty.Register( "RenderFocused", typeof( bool ), typeof( ButtonChrome ), new UIPropertyMetadata( false, OnRenderFocusedChanged ) );
|
|
public bool RenderFocused
|
|
{
|
|
get
|
|
{
|
|
return ( bool )GetValue( RenderFocusedProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( RenderFocusedProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnRenderFocusedChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnRenderFocusedChanged( ( bool )e.OldValue, ( bool )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnRenderFocusedChanged( bool oldValue, bool newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //RenderFocused
|
|
|
|
#region RenderMouseOver
|
|
|
|
public static readonly DependencyProperty RenderMouseOverProperty = DependencyProperty.Register( "RenderMouseOver", typeof( bool ), typeof( ButtonChrome ), new UIPropertyMetadata( false, OnRenderMouseOverChanged ) );
|
|
public bool RenderMouseOver
|
|
{
|
|
get
|
|
{
|
|
return ( bool )GetValue( RenderMouseOverProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( RenderMouseOverProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnRenderMouseOverChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnRenderMouseOverChanged( ( bool )e.OldValue, ( bool )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnRenderMouseOverChanged( bool oldValue, bool newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //RenderMouseOver
|
|
|
|
#region RenderNormal
|
|
|
|
public static readonly DependencyProperty RenderNormalProperty = DependencyProperty.Register( "RenderNormal", typeof( bool ), typeof( ButtonChrome ), new UIPropertyMetadata( true, OnRenderNormalChanged ) );
|
|
public bool RenderNormal
|
|
{
|
|
get
|
|
{
|
|
return ( bool )GetValue( RenderNormalProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( RenderNormalProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnRenderNormalChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnRenderNormalChanged( ( bool )e.OldValue, ( bool )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnRenderNormalChanged( bool oldValue, bool newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //RenderNormal
|
|
|
|
#region RenderPressed
|
|
|
|
public static readonly DependencyProperty RenderPressedProperty = DependencyProperty.Register( "RenderPressed", typeof( bool ), typeof( ButtonChrome ), new UIPropertyMetadata( false, OnRenderPressedChanged ) );
|
|
public bool RenderPressed
|
|
{
|
|
get
|
|
{
|
|
return ( bool )GetValue( RenderPressedProperty );
|
|
}
|
|
set
|
|
{
|
|
SetValue( RenderPressedProperty, value );
|
|
}
|
|
}
|
|
|
|
private static void OnRenderPressedChanged( DependencyObject o, DependencyPropertyChangedEventArgs e )
|
|
{
|
|
ButtonChrome buttonChrome = o as ButtonChrome;
|
|
if( buttonChrome != null )
|
|
buttonChrome.OnRenderPressedChanged( ( bool )e.OldValue, ( bool )e.NewValue );
|
|
}
|
|
|
|
protected virtual void OnRenderPressedChanged( bool oldValue, bool newValue )
|
|
{
|
|
// TODO: Add your property changed side-effects. Descendants can override as well.
|
|
}
|
|
|
|
#endregion //RenderPressed
|
|
|
|
#region Contsructors
|
|
|
|
static ButtonChrome()
|
|
{
|
|
DefaultStyleKeyProperty.OverrideMetadata( typeof( ButtonChrome ), new FrameworkPropertyMetadata( typeof( ButtonChrome ) ) );
|
|
}
|
|
|
|
#endregion //Contsructors
|
|
}
|
|
}
|
|
|