我在代码中遇到绑定问题。
我使用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));
在其他控件中我有Line,我尝试使用绑定到Line终点,如下所示:
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 :(得分:0)
要调试这种情况,你应该使用像snoop WPF这样的工具来查看XAML。这将显示实际绑定是什么。
可能是你的绑定,但没有更新。要解决此问题,您的类应实现INotifyPropertyChanged。每当您想要更新值时,比如在设置值之后,使用属性的名称调用以下函数:
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
答案 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));