XAML: Почему этот триггер не работает? - PullRequest
3 голосов
/ 26 мая 2011

Я бы хотел использовать триггер вне стиля. Редактировать : ой, извините, на самом деле это стиль внутри MainWindow, но я хочу, чтобы триггер применялся к эллипсу, а не к MainWindow.

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

Как исправить ошибку компилятора: «Не удается найти статический член« FillProperty »для типа« MainWindow »»?

Ответы [ 3 ]

4 голосов
/ 26 мая 2011

Вы должны поставить это в стиле

<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>
2 голосов
/ 26 мая 2011

В прямых триггерах вам нужны квалифицирующие имена типов, например:

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

Это не сработает, поскольку прямые триггеры разрешают только EventTriggers, вместо этого используйте стиль.

0 голосов
/ 26 мая 2011

В вашем окне нет свойства с именем Fill, как у Ellipse. Может быть, вы имеете в виду «Фон».

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