如果你看看Selector
和TabItem
類他們顯然都擁有IsSelectedProperty
。依賴屬性 - 擁有2個所有者有什麼意義?
static Selector()
{
...
IsSelectedProperty = DependencyProperty.RegisterAttached("IsSelected", typeof(bool), typeof(Selector), ...);
...
}
static TabItem()
{
IsSelectedProperty = Selector.IsSelectedProperty.AddOwner(typeof(TabItem), ...);
...
}
所以我想我的問題是...因爲TabItem的包含實際的PropertyChanged邏輯是什麼的IsSelectedProperty甚至居住在Selector
類的呢?
所以基本上在選擇器類被定義爲給它廣泛可用性要在多個控件使用,但需要的TabItem它的所有權,使得當值改變它可以註冊回調和還避免' '?此外,您在說Selector將其標記爲AttachedProperty,因爲它只是爲了讓其他屬性使用它而已,並不是說它是在Selector實例中使用的屬性。 –
michael
2011-05-19 14:36:18
非常。它不被_Selector's使用,而是間接地通過它們的項目和內部(想象多重選擇切換)。 'ListBoxItem'和'DataGridRow'也使用回調(和'ListViewItem'繼承'ListBoxItem')。有IsSelectedDependencyProperty'的'一個原始實例堅持設計和全依賴產權制度的理念,自'IsSelected'在所有這些背景完全相同的使用和意義。還有'SelectedEvent','UnselectedEvent'等等(例如,'ListBoxItem'對它們做'AddOwner')。 – 2011-05-19 15:21:06