Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 48 additions & 6 deletions src/MaterialDesignThemes.Wpf/SliderAssist.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace MaterialDesignThemes.Wpf;
using System.Windows.Media;

namespace MaterialDesignThemes.Wpf;

public static class SliderAssist
{
Expand All @@ -21,22 +23,62 @@ public static readonly DependencyProperty OnlyShowFocusVisualWhileDraggingProper
typeof(SliderAssist),
new PropertyMetadata(false));

public static void SetOnlyShowFocusVisualWhileDragging(RangeBase element, bool value)
=> element.SetValue(OnlyShowFocusVisualWhileDraggingProperty, value);

public static bool GetOnlyShowFocusVisualWhileDragging(RangeBase element)
=> (bool)element.GetValue(OnlyShowFocusVisualWhileDraggingProperty);

public static void SetOnlyShowFocusVisualWhileDragging(RangeBase element, bool value)
=> element.SetValue(OnlyShowFocusVisualWhileDraggingProperty, value);

public static readonly DependencyProperty ToolTipFormatProperty
= DependencyProperty.RegisterAttached(
"ToolTipFormat",
typeof(string),
typeof(SliderAssist),
new PropertyMetadata(null));

public static string GetToolTipFormat(RangeBase element)
=> (string)element.GetValue(ToolTipFormatProperty);

public static void SetToolTipFormat(RangeBase element, string value)
=> element.SetValue(ToolTipFormatProperty, value);

public static string GetToolTipFormat(RangeBase element)
=> (string)element.GetValue(ToolTipFormatProperty);
// Fix for Issue3628
public static readonly DependencyProperty FocusSliderOnClickProperty =
DependencyProperty.RegisterAttached(
"FocusSliderOnClick",
typeof(bool),
typeof(SliderAssist),
new PropertyMetadata(false, OnFocusSliderOnClickChanged));

public static bool GetFocusSliderOnClick(RangeBase obj) =>
(bool)obj.GetValue(FocusSliderOnClickProperty);

public static void SetFocusSliderOnClick(RangeBase obj, bool value) =>
obj.SetValue(FocusSliderOnClickProperty, value);

private static void OnFocusSliderOnClickChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is Slider slider)
{
if ((bool)e.NewValue)
{
slider.AddHandler(UIElement.PreviewMouseLeftButtonDownEvent,
(MouseButtonEventHandler)Slider_PreviewMouseLeftButtonDown,
true);
}
else
{
slider.RemoveHandler(UIElement.PreviewMouseLeftButtonDownEvent,
(MouseButtonEventHandler)Slider_PreviewMouseLeftButtonDown);
}
}
}

private static void Slider_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (sender is Slider slider)
{
slider.Focus();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters"
xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf">
Expand Down Expand Up @@ -993,6 +993,7 @@
<Setter Property="Template" Value="{StaticResource MaterialDesignDiscreteSliderHorizontal}" />
<Setter Property="UseLayoutRounding" Value="False" />
<Setter Property="wpf:ElevationAssist.Elevation" Value="Dp1" />
<Setter Property="wpf:SliderAssist.FocusSliderOnClick" Value="True" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.CheckBox.Disabled}" />
Expand All @@ -1015,6 +1016,7 @@
<Setter Property="Template" Value="{StaticResource MaterialDesignDiscreteSliderVertical}" />
<Setter Property="UseLayoutRounding" Value="False" />
<Setter Property="wpf:ElevationAssist.Elevation" Value="Dp1" />
<Setter Property="wpf:SliderAssist.FocusSliderOnClick" Value="True" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource MaterialDesign.Brush.CheckBox.Disabled}" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -318,9 +318,12 @@ public async Task ContextMenu_FollowsTextBoxFontFamily()

var contextMenu = await textBox.GetElement<ContextMenu>(".ContextMenu");

var textBoxFont = await textBox.GetFontFamily();
Assert.Equal("Times New Roman", textBoxFont?.FamilyNames.Values.First());
Assert.Equal(textBoxFont, await contextMenu.GetFontFamily());
FontFamily? textBoxFont = await textBox.GetFontFamily();
Assert.Contains("Times New Roman", textBoxFont?.FamilyNames.Values ?? []);
await Wait.For(async () =>
{
Assert.Equal(textBoxFont, await contextMenu.GetFontFamily());
});

recorder.Success();
}
Expand Down
Loading