下面的XAML有一个Rectangle和一个带3个按钮的StackPanel。当鼠标指针移过MyRect矩形时,它显示StackPanel。
但是当鼠标指针移到StackPanel内的一个Button控件上时,它会像疯了一样闪烁。这是因为鼠标指针不再位于MyRect矩形上方。因此它将StackPanel可见性设置为折叠。这会导致鼠标指针再次超过MyRect Rectangle,这会导致StackPanel可见性被折叠。这种情况持续不断地导致闪烁。
我需要做些什么来显示StackPanel并允许用户将鼠标指针移动到StackPanel的按钮(和/或任何内容)上而不会闪烁?
我希望在XAML中完成所有工作。 (请不要使用代码)。
<Grid Margin="50">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Rectangle x:Name="MyRect"
Fill="Yellow"
Grid.RowSpan="2"/>
<StackPanel Orientation="Horizontal">
<StackPanel.Style>
<Style>
<Setter Property="StackPanel.Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyRect, Path=IsMouseOver}" Value="true">
<Setter Property="StackPanel.Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</StackPanel.Style>
<Button Margin="10" Width="65">One</Button>
<Button Margin="10" Width="65">Two</Button>
<Button Margin="10" Width="65">Three</Button>
</StackPanel>
</Grid>
答案 0 :(得分:2)
不是与IsMouseOver
矩形绑定,而是绑定IsMouseOver
Grid
True
,当您将鼠标悬停在矩形或按钮上时,它将始终为<Grid x:Name="grid">
....
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=grid, Path=IsMouseOver}"
Value="true">
<Setter Property="StackPanel.Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
....
</Grid>
。
{{1}}