WPF Rectangle.Fill方法响应

时间:2013-02-14 20:18:12

标签: c# wpf wpf-controls

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

对此有任何提示/指导将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

问题将在应用程序启动时因RectangleNull而引起,这意味着您不会收到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>