1

WPFを使用してC#.NET3.5でアプリケーションを開発しています。ダイアログボックスにリストボックスがあります。リストボックス内のアイテムにマウスを合わせると、そのアイテムは青い背景で強調表示されます。

リストボックスの項目にマウスを合わせると、特定の操作を実行したい。そこで、以下のようにリストボックスアイテムのマウス入力およびマウス終了イベントハンドラーを追加しました。

XAMLコード:

<ListBox  Name="listBox1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="16,367,0,0" Width="181" Height="186" >
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/>
            <EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

C#コード:

private void listBox1_ListBoxItem_MouseEnter(object sender, MouseEventArgs e)
{
    ListBoxItem Item = sender as ListBoxItem;

    // Perform operations using Item.

    e.Handled = false;
}

private void listBox1_ListBoxItem_MouseLeave(object sender, MouseEventArgs e)
{
    ListBoxItem Item = sender as ListBoxItem;

    // Perform operations using Item.

    e.Handled = false;
}

イベントハンドラーを追加した後、マウスがアイテムの上に来たときにリストボックスアイテムが強調表示されなくなりました。イベントハンドラーで強調表示を機能させるにはどうすればよいですか?

あなたが提供できるどんな助けにも感謝します。

4

2 に答える 2

2

ListBoxItemのデフォルトのスタイルをオーバーライドしているので、代わりにBasedOn属性を使用してスタイルを拡張する必要があります

<ListBox  Name="listBox1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="16,367,0,0" Width="181" Height="186" > 
    <ListBox.ItemContainerStyle> 
        <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> 
            <EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/> 
            <EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/> 
        </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
于 2012-10-10T15:04:47.067 に答える
1

デフォルトのスタイルを失いました。色を元に戻すことができます。しかし、私はDtexからの回答が好きです。

        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <EventSetter Event="MouseEnter" Handler="listBox1_ListBoxItem_MouseEnter"/>
                <EventSetter Event="MouseLeave" Handler="listBox1_ListBoxItem_MouseLeave"/>
                <Style.Resources>
                    <!-- Background of selected item when focussed -->
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                        Color="Green"/>
                    <!-- Background of selected item when not focussed -->
                    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}"
                        Color="LightGreen" />
                </Style.Resources>
            </Style>
        </ListBox.ItemContainerStyle>
于 2012-10-10T15:21:54.627 に答える