Привязка данных WPF к пользовательскому элементу управленияC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Привязка данных WPF к пользовательскому элементу управления

Сообщение Anonymous »

Я пытаюсь создать простой пользовательский элемент управления, чтобы установить свойства Value, SelectionStart и SelectionEnd в слайдере, и добился определенного успеха, но я могу установить свойства только во время компиляции. SetValue в свойстве зависимости не срабатывает при настройке свойства, поэтому ссылка на привязку данных неверна.
Я поместил код в небольшой проект, чтобы упростить его.

Код: Выделить всё

    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;
}
}
Пользовательский элемент управления «UserTest» с именем окна «SliderRoot».

Код: Выделить всё














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();
}
Я могу установить значения вручную в XAML, и они отображаются нормально, но не в том случае, если я устанавливаю значения при нажатии кнопки.
Я почти есть, но я что-то упускаю, возможно, просто.

Подробнее здесь: https://stackoverflow.com/questions/793 ... er-control
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как привязать список к пользовательскому элементу управления Listview в WPF?
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Как передать объект пользовательскому элементу управления WPF
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как передать объект пользовательскому элементу управления WPF
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Как передать объект пользовательскому элементу управления WPF
    Anonymous » » в форуме C#
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • C# динамически добавлять пользовательский элемент управления в проекте wpf к другому пользовательскому элементу управлен
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»