这个触发器有什么问题?

时间:2010-07-01 14:33:33

标签: wpf

我正在学习WPF模板,我正在创建一个按钮。我正在使用触发器来更改'IsMouseOver'上的Ellipse的Fill属性。当我将触发器直接设置为'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'。 (目标必须出现   在任何Setters,Triggers或之前   使用它的条件。)

任何人都可以解释为什么第二种情况不起作用?感谢。

1 个答案:

答案 0 :(得分:3)

不是命名画笔而是使用椭圆 编辑,是的,你知道这个: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>