2

問題は次のコードで再現できます。

<ListView>

    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="VerticalContentAlignment" Value="Center" />
            <Setter Property="HorizontalContentAlignment" Value="Left" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="{x:Null}" />
                    <Setter Property="BorderBrush" Value="{x:Null}" />
                </Trigger>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="Background" Value="#FFEDC4" />
                    <Setter Property="BorderBrush" Value="{x:Null}" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>

    <ListView.Items>
        <ListViewItem Height="70">Some item</ListViewItem>
        <ListViewItem Height="70">Some item</ListViewItem>
        <ListViewItem Height="70">Some item</ListViewItem>
        <ListViewItem Height="70">Some item</ListViewItem>
    </ListView.Items>

</ListView>

コントロールには、マウスクリックを正しく取得するための問題があります。アイテムのテキストをクリックするとうまく機能し、アイテムを選択します。テキストの外側(つまり、外側であるTextBoxが内側ListViewItem)をクリックすると、80%の確率で機能しますが、5回ごとには機能しません。アイテムが選択されません。視覚的なスタイルが間違っているだけでなく、キーボードの矢印キーで確認できるアイテムが実際に選択されていません。

トリガーを追加した後、すべてが始まりました。トリガーを削除IsMouseOverすると役立ちます。

ここで何が間違っている可能性がありますか?

4

1 に答える 1

4

使用する

<Setter Property="Background" Value="Transparent" />

の代わりに{x:Null}。そうしないと、マウスイベントがキャッチされません。

于 2012-08-16T11:55:08.003 に答える