Я поместил код в небольшой проект, чтобы упростить его.
Код: Выделить всё
xmlns:local="clr-namespace:DependencyPropertyExample"
xmlns:uc="clr-namespace:DependencyPropertyExample.User_Controls"
x:Name="MainWin"
mc:Ignorable="d"
Title="Slider Test"
WindowStartupLocation="CenterScreen"
Height="450"
Width="200">
Код: Выделить всё
public static event PropertyChangedEventHandler PropertyChanged;
public static void OnPropertyChanged([CallerMemberName] string? propertyname = null)
{
PropertyChanged?.Invoke(null, new PropertyChangedEventArgs(propertyname));
}
private double _start { get; set; }
public double Start
{
get { return _start; }
set
{
_start = value;
OnPropertyChanged("Start");
}
}
private double _end { get; set; }
public double End
{
get { return _end; }
set
{
_end = value;
OnPropertyChanged("End");
}
}
private double _pos { get; set; }
public double Pos
{
get { return _pos; }
set
{
_pos = value;
OnPropertyChanged("Pos");
}
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
Start = 10;
End = 90;
Pos = 50;
}
private void btn_Press_Click(object sender, RoutedEventArgs e)
{
Start = 30;
End = 60;
Pos = 70;
}
}
Код: Выделить всё
public static readonly DependencyProperty Title_Property =
DependencyProperty.Register("Set_Title", typeof(string), typeof(UserTest), new PropertyMetadata(string.Empty));
public static DependencyProperty SelStart_Property =
DependencyProperty.Register("Set_SelStart", typeof(double), typeof(UserTest), new PropertyMetadata(0.0, OnSelStart_Changed));
public static readonly DependencyProperty SelEnd_Property =
DependencyProperty.Register("Set_SelEnd", typeof(double), typeof(UserTest), new PropertyMetadata(0.0, OnSelEnd_Changed));
public static DependencyProperty Pos_Property =
DependencyProperty.Register("Position", typeof(double), typeof(UserTest), new PropertyMetadata(0.0, OnPosition_Changed));
private static void OnSelStart_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var User = d as UserTest;
User.Digit_Slider.SelectionStart = (double)e.NewValue;
}
private static void OnSelEnd_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var User = d as UserTest;
User.Digit_Slider.SelectionEnd = (double)e.NewValue;
}
private static void OnPosition_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var User = d as UserTest;
User.Digit_Slider.Value = (double)e.NewValue;
}
// Set TITLE (string) property of Slider
public string Set_Title
{
get { return (string)GetValue(Title_Property); }
set { SetValue(Title_Property, value); }
}
// Set SELECTION START (double) property of Slider
// MODE = 1 Way (Write)
public double Set_SelStart
{
get { return (double)GetValue(SelStart_Property); }
set { SetValue(SelStart_Property, value); }
}
// Get VALUE (double) property of Slider
// MODE = 2 Way (Read / Write)
public double Position
{
get { return (double)GetValue(Pos_Property); }
set {
SetValue(Pos_Property, value);
}
}
// Set SELECTION END (double) property of Slider
public double Set_SelEnd
{
get { return (double)GetValue(SelEnd_Property); }
set { SetValue(SelEnd_Property, value); }
}
#endregion DEPENDENCY_PROPERTIES
public UserTest()
{
InitializeComponent();
}
Я почти есть, но я что-то упускаю, возможно, просто.
Подробнее здесь: https://stackoverflow.com/questions/793 ... er-control