wpf
Перемещение слайдера: обновление только при перетаскивании
Поиск…
параметры
параметр | подробность |
---|---|
Значение (float) | Свойство, связанное с этим свойством Dependency, будет обновляться всякий раз, когда пользователь прекратит перетаскивание ползунка |
замечания
- Обязательно обратитесь к сборке System.Windows.Interactivity , чтобы XAML Parser распознал объявление xmlns: i .
- Обратите внимание, что инструкция xmlns: b соответствует пространству имен, в котором реализована реализация поведения
- Пример предполагает знание знаний об обязательных выражениях и XAML.
Реализация поведения
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Interactivity;
namespace MyBehaviorAssembly
{
public class SliderDragEndValueBehavior : Behavior<Slider>
{
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
"Value", typeof (float), typeof (SliderDragEndValueBehavior), new PropertyMetadata(default(float)));
public float Value
{
get { return (float) GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
protected override void OnAttached()
{
RoutedEventHandler handler = AssociatedObject_DragCompleted;
AssociatedObject.AddHandler(Thumb.DragCompletedEvent, handler);
}
private void AssociatedObject_DragCompleted(object sender, RoutedEventArgs e)
{
Value = (float) AssociatedObject.Value;
}
protected override void OnDetaching()
{
RoutedEventHandler handler = AssociatedObject_DragCompleted;
AssociatedObject.RemoveHandler(Thumb.DragCompletedEvent, handler);
}
}
}
Использование XAML
<UserControl x:Class="Example.View"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:b="MyBehaviorAssembly;assembly=MyBehaviorAssembly"
mc:Ignorable="d"
d:DesignHeight="200" d:DesignWidth="200"
>
<Slider>
<i:Interaction.Behaviors>
<b:SliderDragEndValueBehavior
Value="{Binding Value, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}"
/>
</i:Interaction.Behaviors>
</Slider>
</UserControl>
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow