如果你看看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