2010-09-22 87 views
4
class MyLine : Shape { 
    public static readonly DependencyProperty X11Property; 
    public static readonly DependencyProperty X22Property; 
    public static readonly DependencyProperty Y11Property; 
    public static readonly DependencyProperty Y22Property; 

    static MyLine() { 
     X11Property = DependencyProperty.Register("X11", typeof(double), typeof(MyLine), new UIPropertyMetadata(double.NaN)); 
     X22Property = DependencyProperty.Register("X22", typeof(double), typeof(MyLine), new UIPropertyMetadata(double.NaN)); 
     Y11Property = DependencyProperty.Register("Y11", typeof(double), typeof(MyLine), new UIPropertyMetadata(double.NaN)); 
     Y22Property = DependencyProperty.Register("Y22", typeof(double), typeof(MyLine), new UIPropertyMetadata(double.NaN)); 
    } 

    [TypeConverter(typeof(LengthConverter))] 
    public double X11 { get { return (double)GetValue(X11Property); } set { SetValue(X11Property, value); } } 
    [TypeConverter(typeof(LengthConverter))] 
    public double X22 { get { return (double)GetValue(X22Property); } set { SetValue(X22Property, value); } } 
    [TypeConverter(typeof(LengthConverter))] 
    public double Y11 { get { return (double)GetValue(Y11Property); } set { SetValue(Y11Property, value); } } 
    [TypeConverter(typeof(LengthConverter))] 
    public double Y22 { get { return (double)GetValue(Y22Property); } set { SetValue(Y22Property, value); } } 

    protected override System.Windows.Media.Geometry DefiningGeometry { 
     get { 
      var geometryGroup = new GeometryGroup(); 

      // Add line 
      geometryGroup.Children.Add(new LineGeometry(new Point(X11, Y11), new Point(X22, Y22))); 
      return geometryGroup; 
     } 
    } 
} 

爲什麼當我更新WPF設計器(VS 2010)中的「myLine」座標時,它不會自動更新它(實時)?DependencyProperty和WPF設計器

當使用默認的「Line」WPF對象時,它們在XAML代碼在XAML/Design視圖中被更改(編輯)時自動更新。

回答

6

因爲這些屬性會影響渲染,你應該在元數據中指定:

X11Property = DependencyProperty.Register("X11", typeof(double), typeof(DirectionLine), new FrameworkPropertyMetadata(double.NaN, FrameworkPropertyMetadataOptions.AffectsRender)); 

我不知道這將是足夠的設計者考慮到這一點,但它是值得一試..

+0

...很酷。工作。謝謝! – serhio 2010-09-22 15:01:07