c#/ WPF的快速性能问题。
我在网格中有一个矩形:
<Rectangle Name="NewPage" Grid.Row="1" Width="42" Height="59.4" Stroke="Black" MouseEnter="Rectangle_MouseEnter_1" MouseLeave="NewPage_MouseLeave_1" />
我使用:
对MouseEnter和MouseLeave执行填充private void Rectangle_MouseEnter_1(object sender, MouseEventArgs e)
{
SolidColorBrush blueBrush = new SolidColorBrush();
blueBrush.Color = Colors.Blue;
NewPage.Fill = blueBrush;
}
private void NewPage_MouseLeave_1(object sender, MouseEventArgs e)
{
SolidColorBrush whiteBrush = new SolidColorBrush();
whiteBrush.Color = Colors.White;
NewPage.Fill = whiteBrush;
}
我们希望的目标是在鼠标移动到矩形时突出显示矩形,稍后再点击可以做更多的工作。
我遇到的问题是填充方法的响应性。我可以在填充之前将鼠标移动到矩形上。启动应用程序后,它也不会在约15秒后开始填充。
对此有任何提示/指导将非常感激。
谢谢!
答案 0 :(得分:2)
问题将在应用程序启动时因Rectangle
为Null
而引起,这意味着您不会收到MouseOver
事件,因为它会直线运行,但只会变为蓝色Stroke
选择MouseOver
,尝试首先将x中的矩形设置为White
。
<Rectangle Fill="White" Name="NewPage" Grid.Row="1" Width="42" Height="59.4" Stroke="Black" MouseEnter="Rectangle_MouseEnter_1" MouseLeave="NewPage_MouseLeave_1" />
但更好的选择是在Xaml中使用Trigger
代替。这样,您的代码中就不需要任何事件处理程序,并且您可以从实际代码库中分离UI逻辑。
<Rectangle Name="NewPage" Grid.Row="1" Width="42" Height="59.4" Stroke="Black" >
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill" Value="White" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True" >
<Setter Property="Fill" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>