Chciałbym żeby slider aktywował się kliknięciem i pozostał aktywny do momentu kliknięcia w innym miejscu niż slider. W jaki sposób najlepiej wykryć kliknięcie poza sliderem? Próbowałem Mouse.PreviewMouseDownOutsideCapturedElementEvent ale wtedy wymuszam CaptureMouse na sliderze i nie mogę przesuwać slidera. Także kliknięcia na sliderze powodują wywołanie eventu.
Slider zawarty jest w ContentControl żeby można było wykryć kliknięcie myszy gdy slider jest nieaktywny.
Jest jakiś lepszy sposób na wykrycie kliknięcia poza sliderem?
XAML:
<ContentControl Grid.Row="1" Width="400" Height="20" MouseLeftButtonDown="ContentControl_MouseLeftButtonDown">
<Slider x:Name="sliderTest" PreviewMouseLeftButtonDown="sliderTest_PreviewMouseLeftButtonDown"
IsMoveToPointEnabled="True" Grid.Row="1" Width="400" Height="20"/>
</ContentControl>
C#
private void ContentControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
sliderTest.IsEnabled = true;
}
private void sliderTest_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (!sliderTest.IsMouseCaptured)
sliderTest.CaptureMouse();
AddHandler();
}
private void AddHandler()
{
AddHandler(Mouse.PreviewMouseDownOutsideCapturedElementEvent, new MouseButtonEventHandler(HandleClickOutsideOfControl), true);
}
private void HandleClickOutsideOfControl(object sender, MouseButtonEventArgs e)
{
sliderTest.ReleaseMouseCapture();
sliderTest.IsEnabled = false;
}