Что не так с этим триггером? - PullRequest
1 голос
/ 01 июля 2010

Я изучаю шаблоны 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. (Цель должна появиться перед любыми сеттерами, триггерами или Условия, которые его используют.)

Может кто-нибудь объяснить, почему второй случай не работает? Спасибо.

1 Ответ

3 голосов
/ 01 июля 2010

Вместо наименования кисти вы используете эллипс Отредактируйте, да, вы знаете это: P

<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="Border" Property="Fill" Value="Black"/>
    </Trigger>
</ControlTemplate.Triggers>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...