ListBox:未突出显示所选项目

时间:2013-07-18 13:56:03

标签: wpf listbox

在我的WPF应用程序中,我有一个简单的列表框:

                 <ListBox x:Name="lbUtilities">
                    <ListBoxItem Tag="2" Content="One" IsSelected="True" />
                    <ListBoxItem Tag="5" Content="Two" />
                 </ListBox>

问题是当ListBox第一次出现时,所选项目(“One”)不会突出显示。如果我点击任何项目,它会突出显示。如何将默认选中的项目突出显示为系统颜色?

感谢。

3 个答案:

答案 0 :(得分:4)

它已被选中,但你需要一个没有聚焦的高亮

<ListBox Grid.Row="0" x:Name="lbUtilities">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True" >
                    <Setter Property="FontWeight" Value="Bold" />
                    <Setter Property="Background" Value="Transparent" />
                    <Setter Property="Foreground" Value="Black" />
                </Trigger>
            </Style.Triggers>
            <Style.Resources>
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
                <!-- Background of selected item when focussed -->
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightCyan"/>
                <!-- Background of selected item when not focussed -->
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="LightGray" />
            </Style.Resources>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBoxItem Tag="2" Content="One" IsSelected="True"/>
    <ListBoxItem Tag="5" Content="Two" />
</ListBox>

答案 1 :(得分:-1)

<Grid FocusManager.FocusedElement="{Binding ElementName=lbUtilities}">
    <ListBox Name="lbUtilities" SelectedIndex="0" >
        <ListBoxItem Content="One"></ListBoxItem>
        <ListBoxItem Content="Two"></ListBoxItem>
    </ListBox>
</Grid>

答案 2 :(得分:-1)

我在listview控件中遇到了类似的问题,其中所选项目仅在用户点击它时突出显示,而不是从后面的代码突出显示,如:

MyListView.SelectedItem = SomeObjectInItemsSource

我看到该项目已被有效选中但未按我的ItemContainerStyle中的定义突出显示。然后我尝试了别的东西:

With CType(MyListView.ItemsSource,IList) 
    .MyListView.SelectedIndex = .IndexOf(SomeObjectInItemsSource)
End With

然后它开始按预期工作。