1

Selectorとクラスを見るとTabItem、明らかに両方ともIsSelectedProperty.

static Selector()
{
    ...
    IsSelectedProperty = DependencyProperty.RegisterAttached("IsSelected", typeof(bool), typeof(Selector), ...);
    ...
}

static TabItem()
{
    IsSelectedProperty = Selector.IsSelectedProperty.AddOwner(typeof(TabItem), ...);
    ...
}

だから私は私の質問だと思います... Tabitem には実際の propertychanged ロジックが含まれているため、クラスに存在する IsSelectedProperty のポイントは何Selectorですか?

4

2 に答える 2

2

この特定のケースでSelectorは、IsSelected項目を選択できる DP から派生した多数のコントロール ( ComboBoxListBoxListViewTabControl)があるため、 に DP がありDataGridます。それらはすべて、アイテムを でマークする機能を必要とするIsSelectedため、その DP は共通の基本クラスで宣言されます。ティムが言ったように、ドライ。

TabItem所有者として自身を追加するもう 1 つの理由SelectorIsSelectedSelector. 添付プロパティは、そのように非常にモバイルです。

ただし、TabItemは、 の添付プロパティではないような所有者として自身を追加しますTabItem。また、値が変更されたときに呼び出されるコールバック メソッドを登録して、選択または選択解除されたときにいくつかのことを実行できるようにします。

はい、Intellisense で入力<TabItemして表示する方が簡単です。IsSelected探し回って、他のクラスの添付プロパティを使用する必要があることを見つける必要があります。

于 2011-05-19T13:52:59.657 に答える
1

これは基本的に DRY (Don't Repeat Yourself) の単なるインスタンスです。このトピックに関する MSDN フォーラムのスレッドを次に示します。

DependencyProperty.AddOwner - ポイントは何ですか

于 2011-05-19T02:08:09.407 に答える