私はわずかに退色したテキストを通常表示するカスタムボタンを作成しており、フル強度のテキストはMouseOver
またはMouseDown
に作成しています。私は、これらのテキスト色のブラシを表現するために私のコントロールのGeneric.xaml
に2つのリソースを定義している:リソースをカスタムコントロールプロパティにバインドする
<!-- Text Brushes -->
<SolidColorBrush x:Key="NormalTextBrush" Color="Black" />
<SolidColorBrush x:Key="FadedTextBrush" Color="Gray" />
コントロールがコンパイルされ、その構成で正常に動作します。
しかし、カスタムコントロールのForeground
プロパティを使用して、コントロールのユーザーにテキストの色を設定させたいとします。だから、私はこれにリソース宣言を変更:
<!-- Text Brushes -->
<SolidColorBrush x:Key="NormalTextBrush" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" />
<SolidColorBrush x:Key="FadedTextBrush" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ColorConverter}, ConverterParameter='1.2'}" />
2番目の宣言は、テキストの色をフェードするHSL
値コンバータを使用しています。
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Foreground; DataItem='TaskButton' (Name='Button1'); target element is 'SolidColorBrush' (HashCode=38118303); target property is 'Color' (type 'Color')
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=Foreground; DataItem=null; target element is 'SolidColorBrush' (HashCode=47449297); target property is 'Color' (type 'Color')
私はData Error
が私に言っているかわからないんだけど。誰が何が起こっているのか、どのように修正するのか教えていただけますか?ご協力いただきありがとうございます。
説明のために+1 –
これに受け入れられた答えを変更しました - FindAncestorについてのヒントは、ソリューションの重要な要素でした。 –
Hmmm、私は相対的なソースバインディングがビジュアルツリーを歩き、リソースは論理ツリーのメンバーだと思う。私はいつもこれを嫌っている。誰かが100%知っていることが起こった場合、これを読んで、コメントを残してください、THX。 – Will