XAML:为什么这个触发不起作用?

时间:2011-05-26 16:48:40

标签: .net wpf xaml triggers

我想在风格之外使用触发器。 编辑:哎呀,抱歉,它实际上在MainWindow的一个样式中,但是我希望触发器应用于Ellipse而不是MainWindow。

<Ellipse Fill="White" StrokeThickness="1" Stroke="Black">
    <Ellipse.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Fill" Value="Yellow"/>
        </Trigger>
    </Ellipse.Triggers>
</Ellipse>

如何修复编译器错误,即“在'MainWindow'类型上找不到静态成员'FillProperty'”?

3 个答案:

答案 0 :(得分:4)

你必须把它放在风格

<Ellipse  StrokeThickness="1" Width="20" Height="20" Stroke="black">
    <Ellipse.Style>
  <Style TargetType="{x:Type Ellipse}">
    <Setter Property="Fill" Value="Red"/>

    <Style.Triggers>
      <Trigger Property="IsMouseOver" Value="true">
        <Setter Property="Fill" Value="green"/>
      </Trigger>
    </Style.Triggers>
  </Style>
</Ellipse.Style>

答案 1 :(得分:2)

在直接触发器中,您需要符合条件的类型名称,如下所示:

<Ellipse Width="100" Height="100">
    <Ellipse.Triggers>
        <Trigger Property="Ellipse.IsMouseOver" Value="True">
            <Setter Property="Ellipse.Fill" Value="Yellow" />
        </Trigger>
    </Ellipse.Triggers>
</Ellipse>

这不起作用,因为直接触发器仅允许EventTriggers,而是使用样式。

答案 2 :(得分:0)

您的窗口没有像Ellipse那样名为“Fill”的属性。也许你的意思是“背景”。