add SplitButtonItem

This commit is contained in:
NaBian committed 2019-09-05 00:14:50 +08:00
1 parent a54fc69869
commit 1b49c516c3
8 files changed
+141 -36

No files matched your search

@@ -1,18 +0,0 @@
using System.Windows;
using System.Windows.Controls.Primitives;
using HandyControl.Data.Enum;
namespace HandyControl.Controls
{
public class SplitButton : ButtonBase
{
public static readonly DependencyProperty HitModeProperty = DependencyProperty.Register(
"HitMode", typeof(MouseHitMode), typeof(SplitButton), new PropertyMetadata(default(MouseHitMode)));
public MouseHitMode HitMode
{
get => (MouseHitMode) GetValue(HitModeProperty);
set => SetValue(HitModeProperty, value);
}
}
}
@@ -0,0 +1,49 @@
using System.Windows;
using System.Windows.Controls;
using HandyControl.Data.Enum;
namespace HandyControl.Controls
{
public class SplitButton : ItemsControl
{
public static readonly DependencyProperty HitModeProperty = DependencyProperty.Register(
"HitMode", typeof(MouseHitMode), typeof(SplitButton), new PropertyMetadata(default(MouseHitMode)));
public MouseHitMode HitMode
{
get => (MouseHitMode) GetValue(HitModeProperty);
set => SetValue(HitModeProperty, value);
}
public static readonly DependencyProperty ContentProperty = DependencyProperty.Register(
"Content", typeof(object), typeof(SplitButton), new PropertyMetadata(default(object)));
public object Content
{
get => GetValue(ContentProperty);
set => SetValue(ContentProperty, value);
}
public static readonly DependencyProperty ContentTemplateProperty = DependencyProperty.Register(
"ContentTemplate", typeof(DataTemplate), typeof(SplitButton), new PropertyMetadata(default(DataTemplate)));
public DataTemplate ContentTemplate
{
get => (DataTemplate) GetValue(ContentTemplateProperty);
set => SetValue(ContentTemplateProperty, value);
}
public static readonly DependencyProperty MaxDropDownHeightProperty = DependencyProperty.Register(
"MaxDropDownHeight", typeof(double), typeof(SplitButton), new PropertyMetadata(SystemParameters.PrimaryScreenHeight / 3.0));
public double MaxDropDownHeight
{
get => (double) GetValue(MaxDropDownHeightProperty);
set => SetValue(MaxDropDownHeightProperty, value);
}
protected override bool IsItemItsOwnContainerOverride(object item) => item is SplitButtonItem;
protected override DependencyObject GetContainerForItemOverride() => new SplitButtonItem();
}
}
@@ -0,0 +1,9 @@
using System.Windows.Controls;
namespace HandyControl.Controls
{
public class SplitButtonItem : MenuItem
{
}
}
@@ -132,11 +132,8 @@ namespace HandyControl.Controls
set => SetValue(IsReadOnlyProperty, value);
}
private void RateItemValueChanged(object sender, RoutedEventArgs e)
{
Value =
(from RateItem item in Items where item.IsSelected select item.IsHalf ? 0.5 : 1).Sum();
}
private void RateItemValueChanged(object sender, RoutedEventArgs e) =>
Value = (from RateItem item in Items where item.IsSelected select item.IsHalf ? 0.5 : 1).Sum();
private void RateItemSelectedChanged(object sender, RoutedEventArgs e)
{
@@ -163,15 +160,9 @@ namespace HandyControl.Controls
}
}
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is RateItem;
}
protected override bool IsItemItsOwnContainerOverride(object item) => item is RateItem;
protected override DependencyObject GetContainerForItemOverride()
{
return new RateItem();
}
protected override DependencyObject GetContainerForItemOverride() => new RateItem();
private void OnApplyTemplateInternal()
{
@@ -242,9 +233,6 @@ namespace HandyControl.Controls
}
}
public void Reset()
{
Value = DefaultValue;
}
public void Reset() => Value = DefaultValue;
}
}