Ultimate UI for WPF 製品では、UI コントロール内部のテンプレートで定義されている要素を取得するヘルパーメソッドを提供しています。

GetAncestorXXX は起点となる要素の親方向に向かって要素を探します。GetDescendantXXX は起点となる要素の子孫方向に向かって要素を探します。

Style 設定では実現が難しい要件においては、これらヘルパーメソッドを活用してテンプレート内部の要素にアクセスしましょう。

例えば、XamTabControl のタブの閉じるボタンに対応するツールチップを見てみましょう。閉じるボタンはテンプレート内に CloseButton という名前で定義されています。

ただし、XamTabControl では CloseButton をプロパティとしては公開していないため、XamTabControl から辿ってアクセスすることはできません。そこで、GetDescendantFromName メソッドを利用して CloseButton へアクセスしてみます。GetDescendantFromName メソッドの第一引数は、起点となるタブ(TabItemEx)を指定しています。

private void XamTabControl_Loaded(object sender, RoutedEventArgs e)
{
    var tabControl = sender as XamTabControl;
    var tab = tabControl.Items[0] as TabItemEx;
    var button = 
        Infragistics.Windows.Utilities.GetDescendantFromName(tab, "CloseButton") as Button;
    button.ToolTip = "カスタム文字列";
}

実行結果

タブ内の閉じるボタンにアクセスし、ツールチップを変更することができました。

Tagged:

製品について

Ultimate UI for WPF