WPF - FocusVisualStyle 我在哪里应用它?

标签 wpf focusvisualstyle

我有一个 UserControl它基本上包装了一个 ListBox像这样 -

        <ListBox x:Name="lb" ItemsSource="{Binding ElementName=UC,Path=Pages}"
             Background="{Binding ElementName=UC,Path=Background}"
             BorderBrush="Transparent"
             ScrollViewer.CanContentScroll="False" 
             ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
             ScrollViewer.VerticalScrollBarVisibility="Disabled">

        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" IsItemsHost="True"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>

        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid Width="{Binding ElementName=UC,Path=ActualWidth}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition MinWidth="20"/>
                        <ColumnDefinition/>
                        <ColumnDefinition MinWidth="20"/>
                    </Grid.ColumnDefinitions>
                    <ContentPresenter Grid.Column="1" Content="{Binding}"/>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

我需要设置 FocusVisualStyle{x:Null}隐藏此功能,但无论我在哪里应用它,我仍然会获得默认的蓝色选择颜色。我试过在 ListBox、StackPanel 和 Grid 上设置它,但无济于事。

任何帮助都会很棒。谢谢。

最佳答案

FocusVisualStyle 在聚焦元素周围应用“行进 Ant ”,而不是背景颜色。要更改所选列表框项目的背景颜色,请执行以下操作:

<ListBox>
    <ListBox.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Value="Red"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Value="Black"/>
    </ListBox.Resources>    
</ListBox>

关于WPF - FocusVisualStyle 我在哪里应用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674219/

相关文章:

c# - 复制一个 ObservableCollection 项

wpf - 在WPF中,如何在使用PreviewKeyDown处理后取消按键?

wpf - 如何摆脱xaml中的元素焦点边框

wpf - 删除用户控件上的焦点矩形

wpf - 在整个应用程序中更改 FocusVisualStyle

c# - 如何从 WPF 用户控件获取托管 WinForm 的实例?

c# - 滚动条,如果 Items 超过 itemsControl 内部

wpf行为单元测试