У меня есть настраиваемый элемент управления, у которого есть свойство зависимости... у него есть несколько, но скажем, Dragable - моя проблема. Свойство является логическим, и я хочу выполнять фрагмент кода каждый раз, когда он изменяется... переключатель.
У меня есть два варианта, оба показаны ниже
[Category("Modal Options")]
public bool Dragable
{
get { return (bool)GetValue(DragableProperty); }
set { SetValue(DragableProperty, value); toggleDragable(); }
}
// Using a DependencyProperty as the backing store for Dragable. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DragableProperty =
DependencyProperty.Register("Dragable", typeof(bool),
typeof(PlussWindow), new PropertyMetadata(false));
private void MakeDragable()
{
this.dragBehavior.Attach(this.LayoutRoot);
}
private void MakeUnDragable()
{
this.dragBehavior.Detach();
}
public virtual void toggleDragable()
{
if (this.Dragable)
{
MakeUnDragable();
}
else
{
MakeDragable();
}
}
or
[Category("Modal Options")]
public bool Dragable
{
get { return (bool)GetValue(DragableProperty); }
set { SetValue(DragableProperty, value); }
}
// Using a DependencyProperty as the backing store for Dragable. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DragableProperty =
DependencyProperty.Register("Dragable", typeof(bool),
typeof(PlussWindow), new PropertyMetadata(false, (o, e) => { (o as PlussWindow).toggleDragable(); }
));
private void MakeDragable()
{
this.dragBehavior.Attach(this.LayoutRoot);
}
private void MakeUnDragable()
{
this.dragBehavior.Detach();
}
public virtual void toggleDragable()
{
if (this.Dragable)
{
MakeUnDragable();
}
else
{
MakeDragable();
}
}
Каждый метод приводит к «Ссылка на объект, не установленная на экземпляр объекта».
Я обычно использую привязку, чтобы решить эту проблему, например, видимость или текст легко сделать, но для пользовательских функций мне нужно включить это в коде.
Как мне это сделать, учитывая, что метод propertychanged является статическим?
toggleDragable
из внешнего кода? Глядя на это, я не думаю, что это проблема свойства Dependency, скорее всего, у вас есть ошибка в том, как вы используете эту вещь dragBehavior. - person AnthonyWJones   schedule 02.02.2010