0

https://stackoverflow.com/a/13188979/637142で説明されているようなカスタム コントロールを作成しようとしています。

これまでのところ、リストビューは次のとおりです。

<ListView Name="listBox1">

        <!-- Place items horizontaly -->
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" ></StackPanel>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemContainerStyle>
            <Style TargetType="{x:Type ListViewItem}">
                <Style.Resources>                        
                    <!-- Background for Selected ListViewItem -->
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                             Color="Yellow"/>
                </Style.Resources>
            </Style>
        </ListView.ItemContainerStyle>

        <!-- The items on the listview  -->
        <ListView.Items>
            <TextBlock Margin="5">Test1</TextBlock>
            <TextBlock Margin="5">Test2</TextBlock>
            <TextBlock Margin="5">Test3</TextBlock>
        </ListView.Items>

</ListView>

私が今抱えている唯一の問題は、ユーザーが矢印キーで項目を選択したときです。たとえば、マウスで項目を選択すると、次のようになります。

ここに画像の説明を入力

しかし、矢印キーで同じ項目を選択すると、次のようになります。

ここに画像の説明を入力

選択したアイテムから黒い点線の境界線を削除するにはどうすればよいですか?

previewKeyDown イベントを追加してから、次のように処理したくありません

 if (e.Key == Key.Left)
 {
         listBox1.SelectedIndex--;
         e.Handled = true;
 }
 else if (e.Key == Key.Right)
 {
         listBox1.SelectedIndex++;
         e.Handled = true;
 }

シフトキーで複数選択できるようにしたいからです。

4

1 に答える 1

2

ListViewItemFocusVisualStyle境界を定義するというプロパティがあります。

プロパティを null に設定するだけで、境界線を削除できます。

<ListView.ItemContainerStyle>
    <Style TargetType="{x:Type ListViewItem}">
        <Style.Resources>

            <!-- Background for Selected ListViewItem -->
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"
                        Color="Yellow"/>
        </Style.Resources>

        <!-- Make sure the dotted border is never shown on ListViewItem -->
        <Setter Property="FocusVisualStyle" Value="{x:Null}" />
    </Style>
</ListView.ItemContainerStyle>
于 2012-11-02T15:57:14.407 に答える