1

MouseOver のリストボックス内のアイテムには、わずかなズーム効果を与える別のスタイルがあります。これはうまく機能しますが、アイテムが ListBox に追加される順序で ZIndex が設定されるため、ズームされたアイテムは次のアイテムの後ろに描画されます。ズームしたアイテムが上になるように設定したいと思います。

MouseOver イベントハンドラを作成して、このように ZIndexProperty を設定しようとしました

    private void ListItem_MouseEnter(object sender, MouseEventArgs e)
    {
        var grid = sender as Grid;            
        grid.SetValue(Canvas.ZIndexProperty, 5);
    }

これは機能しません。ZIndex をまったく設定せずにチェックすると、常に 0 になるため、正しい値を見ていないようです。正しい ZIndexProperty を変更するにはどうすればよいですか?

4

1 に答える 1

1

関連する Xaml が含まれていないため、ListItem_MouseEnter がどのイベントのハンドラーであるかを判断するのは困難です。ListBoxItem の MouseEnter イベントのハンドラーである場合、送信者はグリッドではありません。

MouseOver で ListBoxItem の ZIndex を変更するには、Xaml と以下のコードが機能します。

Page.xaml

<UserControl x:Class="SilverlightApplication1.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <ListBox x:Name="ListBox1">
            <ListBoxItem Content="Test 1" MouseEnter="ListBoxItem_MouseEnter" />
            <ListBoxItem Content="Test 2" MouseEnter="ListBoxItem_MouseEnter" />
            <ListBoxItem Content="Test 3" MouseEnter="ListBoxItem_MouseEnter" />
            <ListBoxItem Content="Test 4" MouseEnter="ListBoxItem_MouseEnter" />
        </ListBox>
    </Grid>
</UserControl>

Page.xaml.cs:

using System;
using System.Windows.Controls;
using System.Windows.Input;

namespace SilverlightApplication1
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
        }

        private void ListBoxItem_MouseEnter(object sender, MouseEventArgs e)
        {
            ListBoxItem listBoxItem = (ListBoxItem)sender;

            listBoxItem.SetValue(Canvas.ZIndexProperty, 5);
        }
    }
}

イベント ハンドラーは、送信者が ListBoxItem であることを意味する各 ListBoxItem の MouseEnter イベントに対応していることに注意してください。

ListBoxItem_MouseEnter メソッドは、MouseEnter で Zindex を 5 に変更します。これは、 Silverlight Spyを使用して検証されています。

于 2009-02-03T22:06:06.127 に答える