From 77c5557650e2e25516b7f7f668c1e8c42f17576b Mon Sep 17 00:00:00 2001 From: brianlagunas_cp Date: Wed, 16 Feb 2011 18:16:36 +0000 Subject: [PATCH] initial check in of new SplitButton control. --- .../SplitButton/SplitButton.cs | 99 ++++++++++++++ .../WPFToolkit.Extended/Themes/Generic.xaml | 129 +++++++++++++++++- .../WPFToolkit.Extended.csproj | 1 + 3 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/SplitButton/SplitButton.cs diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/SplitButton/SplitButton.cs b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/SplitButton/SplitButton.cs new file mode 100644 index 00000000..7e143f0f --- /dev/null +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/SplitButton/SplitButton.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using System.Windows.Controls.Primitives; + +namespace Microsoft.Windows.Controls +{ + public class SplitButton : ContentControl + { + #region Members + + ToggleButton _dropDownButton; + Popup _popup; + + #endregion //Members + + #region Constructors + + static SplitButton() + { + DefaultStyleKeyProperty.OverrideMetadata(typeof(SplitButton), new FrameworkPropertyMetadata(typeof(SplitButton))); + } + + #endregion //Constructors + + #region Properties + + #region DropDownContent + + public static readonly DependencyProperty DropDownContentProperty = DependencyProperty.Register("DropDownContent", typeof(object), typeof(SplitButton), new UIPropertyMetadata(null, OnDropDownContentChanged)); + public object DropDownContent + { + get { return (object)GetValue(DropDownContentProperty); } + set { SetValue(DropDownContentProperty, value); } + } + + private static void OnDropDownContentChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) + { + SplitButton splitButton = o as SplitButton; + if (splitButton != null) + splitButton.OnDropDownContentChanged((object)e.OldValue, (object)e.NewValue); + } + + protected virtual void OnDropDownContentChanged(object oldValue, object newValue) + { + // TODO: Add your property changed side-effects. Descendants can override as well. + } + + #endregion //DropDownContent + + #region IsOpen + + public static readonly DependencyProperty IsOpenProperty = DependencyProperty.Register("IsOpen", typeof(bool), typeof(SplitButton), new UIPropertyMetadata(false, OnIsOpenChanged)); + public bool IsOpen + { + get { return (bool)GetValue(IsOpenProperty); } + set { SetValue(IsOpenProperty, value); } + } + + private static void OnIsOpenChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) + { + SplitButton splitButton = o as SplitButton; + if (splitButton != null) + splitButton.OnIsOpenChanged((bool)e.OldValue, (bool)e.NewValue); + } + + protected virtual void OnIsOpenChanged(bool oldValue, bool newValue) + { + // TODO: Add your property changed side-effects. Descendants can override as well. + } + + #endregion //IsOpen + + #endregion //Properties + + #region Base Class Overrides + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + _dropDownButton = (ToggleButton)GetTemplateChild("PART_ToggleButton"); + + _popup = (Popup)GetTemplateChild("PART_Popup"); + } + + #endregion //Base Class Overrides + } +} diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml index 04b394b2..bf2200c2 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/Themes/Generic.xaml @@ -455,7 +455,7 @@ - + - + @@ -1127,4 +1127,127 @@ + + + + + + + + + diff --git a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj index bb3cd950..46788cd8 100644 --- a/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj +++ b/ExtendedWPFToolkitSolution/Src/WPFToolkit.Extended/WPFToolkit.Extended.csproj @@ -117,6 +117,7 @@ +