Я изучаю шаблоны WPF и создаю один для кнопки. Я использую триггер, чтобы изменить свойство Fill эллипса на «IsMouseOver». Когда я устанавливаю триггер для свойства «Fill» напрямую, он работает. Но когда я пытаюсь сослаться на определенный SolidColorBrush, я получаю ошибку компиляции.
Это работает:
<ControlTemplate x:Key="GhostButtonTemplate" TargetType="Button">
<Grid>
<Ellipse Name="Border" Stroke="DarkGray" Fill="Gray">
</Ellipse>
<ContentPresenter ... />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="Fill" Value="Black"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Это вызывает ошибку:
<ControlTemplate x:Key="GhostButtonTemplate" TargetType="Button">
<Grid>
<Ellipse Name="Border" Stroke="DarkGray">
<Ellipse.Fill>
<SolidColorBrush Color="Gray" x:Name="FillBrush"/>
</Ellipse.Fill>
</Ellipse>
<ContentPresenter ... />
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="FillBrush" Property="Color" Value="Black"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Ошибка:
Не удается найти цель триггера
'FillBrush. (Цель должна появиться
перед любыми сеттерами, триггерами или
Условия, которые его используют.)
Может кто-нибудь объяснить, почему второй случай не работает? Спасибо.