19

Button オブジェクトに IsMouseOVER プロパティがあることがわかります。

しかし、IsMouseOver を持たないグリッドまたはその他の要素のマウスオーバーの効果を作成するにはどうすればよいでしょうか??

ありがとうマルコム

編集:私はそれを理解しました。トリガーの設定方法が間違っていました。

4

3 に答える 3

52

デッドスレッドに返信していることに気づきましたが、スレッドに出くわしたため、スレッドに回答がないため、回答します。

WPF グリッドには「IsMouseOver」プロパティがあります。

「IsMouseOver」プロパティは、マウスがグリッド自体内の「ヒット テスト可能な」コントロール (つまり、ボタン、またはコンボ ボックス) の上にある場合にのみ変化するため、この質問が出されたと思います。

したがって、「IsMouseOver」プロパティが機能しないように見える場合があります (特に、グリッドの Visible プロパティを設定するトリガーで使用している場合)。

例えば:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="25" />
    <ColumnDefinition />
  </Grid.ColumnDefinitions>
  
  <Button Grid.Column="1">A Button</Button>

  <Grid.Style>
    <Style TargetType="{x:Type Grid}">
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="False">
          <Setter Property="Opacity" Value="0.5"></Setter>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="True">
          <Setter Property="Opacity" Value="1"></Setter>
        </Trigger>
      </Style.Triggers>
    </Style>
  </Grid.Style>
</Grid>

上記のグリッドとその内容は半透明で表示されます。最初の列 (何も含まれていない) にカーソルを合わせると、不透明度が完全に設定されないことに気付くでしょう。ただし、2 番目の列のボタンにカーソルを合わせると、不透明度は完全に設定されます。これは、何も入っていない最初の列はヒット テストできないためです。一方、2 番目の列内のボタンはヒット テスト可能であるため、イベントがトリガーされます。

グリッドの IsMouseOver プロパティで、マウスがグリッド自体の上にあることを検出するには、グリッドの Background プロパティを Null 以外に設定するだけです (たとえば、Transparent に設定します)。Background プロパティを設定すると、Grid が「ヒット テスト可能」になります。

次のコードは問題を修正します。

<Grid Background="Transparent">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="25" />
    <ColumnDefinition />
  </Grid.ColumnDefinitions>
  
  <Button Grid.Column="1">A Button</Button>

  <Grid.Style>
    <Style TargetType="{x:Type Grid}">
      <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="False">
          <Setter Property="Opacity" Value="0"></Setter>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="True">
          <Setter Property="Opacity" Value="1"></Setter>
        </Trigger>
      </Style.Triggers>
    </Style>
  </Grid.Style>
</Grid>

-フリニー

于 2011-03-22T17:18:20.113 に答える
0

それは、WPF オブジェクトの "MouseEnter" および "MouseLeave" アクションです。

于 2011-01-18T20:51:56.297 に答える