2014-02-16 6 views
0

У меня проблема со связыванием кода.WPF-код не работает

У меня есть контроль с двойными свойствами X и Y и зависимостью.

public double X 
    { 
     get { return (double)GetValue(XProperty); } 
     set 
     { 
      SetValue(XProperty, value); 
     } 
    } 

    public double Y 
    { 
     get { return (double)GetValue(YProperty); } 
     set 
     { 
      SetValue(YProperty, value); 
     } 
    } 

    public static readonly DependencyProperty XProperty = DependencyProperty.Register("X", typeof(double), typeof(VisualPin)); 
    public static readonly DependencyProperty YProperty = DependencyProperty.Register("Y", typeof(double), typeof(VisualPin)); 

В другом элементе управления У меня есть линия, и я пытаюсь использовать привязку к конечной точке оси, как это:

var xBinding = new Binding("XProperty") {Source = _startPin}; 
var yBinding = new Binding("YProperty") {Source = _startPin}; 
Line.SetBinding(Line.X1Property, xBinding); 
Line.SetBinding(Line.Y1Property, yBinding); 

Всех данные по всем свойствам ОК, я проверил, но не обязательный Работа. У меня нет идеи, почему ... (Все элементы управления находятся на одном холсте)

Спасибо!

+0

Я извиняюсь, моя вина. Проблема была в первом параметре в свойстве зависимости регистров - X вместо XProperty! Решено ... – Frk

+1

Пожалуйста, разместите это как ответ и примите его ИЛИ рассмотрите вопрос об удалении, если вы ничего не ожидаете от сообщества. Благодаря!! –

ответ

0

Я извиняюсь, моя вина. Проблема заключалась в первом параметре в свойстве зависимости регистров.

public static readonly DependencyProperty XProperty = DependencyProperty.Register("X", typeof(double), typeof(VisualPin)); 
public static readonly DependencyProperty YProperty = DependencyProperty.Register("Y", typeof(double), typeof(VisualPin)); 

Вместо:

public static readonly DependencyProperty XProperty = DependencyProperty.Register("XProperty", typeof(double), typeof(VisualPin)); 
public static readonly DependencyProperty YProperty = DependencyProperty.Register("YProperty", typeof(double), typeof(VisualPin)); 
0

Чтобы отладить эту ситуацию, вы должны посмотреть на XAML с помощью инструмента, такого как snoop WPF. Это покажет, каковы фактические привязки.

Возможно, это ваше обязательство, но не обновление. Чтобы исправить это, ваш класс должен реализовать INotifyPropertyChanged. Всякий раз, когда вы хотите обновить значение, как после установки значения, вызовите следующую функцию с именем свойства:

private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
{ 
    if (PropertyChanged != null) 
    { 
     PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 
Смежные вопросы