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;
}

望ましい目標は、マウスが長方形の上に移動したときに長方形を強調表示し、後でクリックしてさらに作業を行うことができるようにすることです。

私が抱えている問題は、fill メソッドの応答性です。四角形が塗りつぶされる前に、四角形をクリアにマウスを動かすことができます。また、アプリを起動してから約15秒間は充填が開始されません。

これに関するヒント/ガイダンスをいただければ幸いです。

ありがとう!

4

1 に答える 1

2

がアプリケーションの起動時に発生するため、問題が発生Rectangleします。これは、直進するためイベントを取得できないことを意味します。ただし、がピックアップしたときにのみ青色に変わります。最初に xaml でRectangle を設定してみてください。NullMouseOverStrokeMouseOverWhite

<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 に答える