0

Styleプロパティ セッターの値を、そのプロパティに値を提供した最も近い親にバインドする方法はありますか? たとえば、次の階層があるとします。

Window> Grid> GroupBox> Grid>TextBox

そして私は次のように書きますStyle

<Style TargetType="{x:Type TextBox}">
    <Setter Property="Visibility" >
        <Setter.Value>
            <Binding Converter="{StaticResource TagToVisibilityConverter}"
                     RelativeSource="{RelativeSource AncestorType=Window}" Path="Tag" />
            </Binding>
        </Setter.Value>
    </Setter>
</Style>

これは単に最上位の親 ( Window) に移動し、Tag プロパティを取得します。私が望むのは、Tagプロパティを使用した最も近い親を検索することです。たとえば、上記の階層で、 a を指定し、 をUserControl指定するTagと、GroupBoxから値をフェッチする必要がありますGroupBox。の巧妙な使い方を考えてAncestorLevelいたのですが、そう簡単にはいかないようです。何か案は?

4

2 に答える 2

0

プロパティ値の継承が必要だと思います。記事によると、

プロパティを値の継承に参加させるには、「方法: 添付プロパティを登録する」の説明に従って、カスタム添付プロパティを作成します。プロパティをメタデータ ( FrameworkPropertyMetadata ) に登録し、そのメタデータ内のオプション設定で「継承」オプションを指定します。また、その値が継承されるため、プロパティに確立されたデフォルト値があることを確認してください。

さらに特別なものが必要な場合は、 VisualTreeHelperクラスを使用して WPF ビジュアル ツリーをウォークスルーし、必要な要素を検索する独自のマークアップ拡張を作成できます。

于 2013-03-09T12:34:13.153 に答える
0

プロパティを含むクラスであるFrameworkElementため、最初のものを確認できます。FrameworkElementTag

RelativeSource="{RelativeSource AncestorType=FrameworkElement}" Path="Tag"
于 2013-03-09T21:06:04.577 に答える