enhance: add IsMouseSelectable property for StepBar (#1142)

close #1142
This commit is contained in:
NaBian committed 2022-03-28 00:18:49 +08:00
1 parent 3e7bd22f32
commit 759abff637
6 files changed
+69 -40

No files matched your search

@@ -30,7 +30,22 @@ public class StepBar : ItemsControl
{
CommandBindings.Add(new CommandBinding(ControlCommands.Next, (s, e) => Next()));
CommandBindings.Add(new CommandBinding(ControlCommands.Prev, (s, e) => Prev()));
ItemContainerGenerator.StatusChanged += ItemContainerGenerator_StatusChanged;
AddHandler(SelectableItem.SelectedEvent, new RoutedEventHandler(OnStepBarItemSelected));
}
private void OnStepBarItemSelected(object sender, RoutedEventArgs e)
{
if (!IsMouseSelectable)
{
return;
}
if (e.OriginalSource is StepBarItem item)
{
SetCurrentValue(StepIndexProperty, item.Index - 1);
}
}
private void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
@@ -151,6 +166,15 @@ public class StepBar : ItemsControl
set => SetValue(DockProperty, value);
}
public static readonly DependencyProperty IsMouseSelectableProperty = DependencyProperty.Register(
"IsMouseSelectable", typeof(bool), typeof(StepBar), new PropertyMetadata(ValueBoxes.FalseBox));
public bool IsMouseSelectable
{
get => (bool) GetValue(IsMouseSelectableProperty);
set => SetValue(IsMouseSelectableProperty, ValueBoxes.BooleanBox(value));
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();