あなたは2つの問題があるかもしれません...
NameScoping ...
ElementNameバインディングにはNameScopingに関する厳しい制限があります...
基本的に、ElementNameを使用すると
バインディングでは、ターゲットオブジェクトのNameScopeを使用して、
指定された名前の要素。その要素に
NameScope、特にFrameworkElement.FindScopeメソッド
論理ツリーを継承し、継承に戻る
論理的な親がない場合のコンテキスト。名前スコープは
すべての名前付きオブジェクトが登録されています。
そのため、あなたのケースでは、ツールヒントのコンテキスト外の参照要素は失敗します。これが正しく動作するようにするには、 Tag
のようなものを使用して壊れたスコープを橋渡しする必要があります...
ツールヒントの可視性
ツールチップの可視性にバインドする代わりに、矩形そのものにマルチバインディングのデータトリガを使用して、条件値に基づいて必要なツールチップを設定することができます。
<!-- Rest of the code --->
簡単にするために、 TooltipVisibilityConverter
がブール値を返すようになりました。