Я создаю пользовательскую кнопку, которая обычно показывает слегка блеклый текст и полный текст на MouseOver
или MouseDown
.Я определил два ресурса в Generic.xaml
моего элемента управления, чтобы представлять кисти для этих цветов текста:
<!-- 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'}" />
Во втором объявлении для преобразования цвета текста используется конвертер значений 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
.Может кто-нибудь сказать мне, что происходит и как это исправить?Спасибо за вашу помощь.