2011-03-10 233 views
0

我有物業WPF:CLR屬性依賴屬性

public double X 
    { 
     get 
     { 
      return Canvas.GetLeft(this) + this.Radius; 
     } 
     set 
     { 
      Canvas.SetLeft(this, value - this.Radius); 
      PropertyChanged(this, new PropertyChangedEventArgs("X")); 
     } 
    } 

我想使用此屬性,但動畫相關的動畫只需要依賴屬性的用戶控制。我如何解決這個問題?

回答

1

這樣看來,你想「X」是你的對象(橢圓?)的中心

我可以建議兩件事情:

  1. 創建一個新的依賴廣告載體,把您的二傳手OnPropertyChanged回調代碼爲新的屬性。 (這可能是最好的)

  2. 將RenderTransform設置爲您的元素,該元素是帶有-Radius的TranslateTransform,然後設置Canvas.Left就像設置其中心一樣。

+0

如果在OnPropertyChanged中將X設置爲50並且半徑爲10,則最終將Canvas.Left設置爲40.該getter將返回正確的50,無需更改。如果半徑改變只是更新X = Canvas.Left +半徑 – kowd 2011-03-11 01:36:51

+0

我不明白在哪裏{return Canvas.GetLeft(this)+ this.Radius; }邏輯。 – 2011-03-11 11:58:54

1

那麼,所有這些屬性是從Canvas.Left派生它的價值。你爲什麼不直接動畫Canvas.Left

+0

可以用C#(而不是XAML)顯示示例嗎? – 2011-03-10 15:47:12