0

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 秒内开始填充。

对此的任何提示/指导将不胜感激。

谢谢!

4

1 回答 1

2

问题将是由于Rectangle应用Null程序启动时引起的,这意味着您不会收到MouseOver事件,因为它是直行的,它只会在Stroke拾取时变为蓝色MouseOver,请先尝试White在 xaml 中将 Rectangle 设置为。

<Rectangle Fill="White" Name="NewPage" Grid.Row="1" Width="42" Height="59.4" Stroke="Black" MouseEnter="Rectangle_MouseEnter_1" MouseLeave="NewPage_MouseLeave_1" />

但更好的选择是Trigger在 Xaml 中为此使用 a 。这样,您的代码中就不需要任何事件处理程序,并且您将 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>
于 2013-02-14T20:33:04.210 回答