0
後,我有一個例子依賴項屬性定義是這樣的:訪問自定義依賴屬性的所有屬性PropertyChangedCallback
public Polyline Shape
{
get { return (Polyline)GetValue(ShapeProperty); }
set { SetValue(ShapeProperty, value); }
}
public static readonly DependencyProperty ShapeProperty =
DependencyProperty.Register("Shape", typeof(Polyline),
typeof(CustomControl), new FrameworkPropertyMetadata(null,
FrameworkPropertyMetadataOptions.AffectsRender, onShapeAdded));
我設置這樣的:
<local:CustomControl>
<local:CustomControl.Shape>
<Polyline Points="0,180 0,80 70,80 90,180 0,180" />
</local:CustomControl.Shape>
</local:CustomControl>
它的回調看起來是這樣的:
private static void onShapeAdded(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
Polyline control = (Polyline)e.NewValue;
//control.Points is always null
}
爲什麼Points回收在回調期間始終爲空? (它發生在每一個屬性)在最後的點設置,所以我想我很快訪問我的控制,但是什麼時候以及如何訪問控制與它的所有屬性設置?
是的,這絕對是一個解決方法,但在我的情況下,我將添加幾個CustomControls和定義大約5個帶有唯一鍵的多段線並綁定它們看起來不太好。必須有更好的方式 – labm0nkey 2013-03-13 11:20:55
爲什麼這看起來不好?它實際上並不具有約束力 - 使用資源與綁定不同。 XAML實際上更簡單,更易維護(所有'Polylines'都是在一個地方定義的)。如果你希望它更接近,你可以在CustomControl的Resources中定義'Polylines'。也許我不瞭解你的總體目標。我能想到的唯一的另一個選擇是將一個監聽器附加到OnShapeAdded方法中的「折線」上,以偵聽對「折線」的「點」屬性的更改。 – 2013-03-13 15:41:26
我已經添加了監聽器,甚至是我的Polyline的'Loaded',在那裏我正在檢查我的Points和其他屬性 – labm0nkey 2013-03-14 10:43:57