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.
99 lines
3.2 KiB
99 lines
3.2 KiB
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
|
|
}
|
|
}
|
|
|