如何避免在wpf列表框中默认选择第一个项目?

时间:2013-01-10 12:26:09

标签: wpf xaml listbox

我希望避免在应用程序加载时默认情况下在Listbox中发生的第一个项目选择。我试过

SelectedIndex= -1

但它不起作用。在ListBox加载之前,我不希望选择任何项目,直到用户从Listbox中选择任何项目。 我将IsSynchronization设置为true,但将其设为false也无法解决我的问题。虽然我必须始终将IsSychronization设置为true。但那没关系。我做谷歌但没有找到任何相关的答案。

谁能告诉我怎么做?

2 个答案:

答案 0 :(得分:12)

我发生了这件事。当我将ListBox.ItemsSource直接绑定到视图模型中的集合时,默认情况下没有选择任何内容。

当我切换为使用CollectionViewSource作为ListBox.ItemsSource时,默认情况下突然第一项被选中。

事实证明这是由ListBox.IsSynchronizedWithCurrentItem引起的。将其设置为

IsSynchronizedWithCurrentItem="False"
ListBox上的

恢复了默认情况下未选择任何内容的所需行为。

答案 1 :(得分:0)

将IsEnabled绑定到一个布尔值,该布尔值将标记用户何时可以选择。列表框仍然可见但不可选。这是我使用的标签的样式代码,必须在登录期间启用它,但不能在操作停止后启用。

  <Style x:Key="LabelStyle" TargetType="{x:Type Label}">
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Width" Value="70" />
        <Setter Property="Height" Value="28"/>
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=LoginInProcess}" Value="True">
                <Setter Property="IsEnabled" Value="False" />
            </DataTrigger>
            <DataTrigger Binding="{Binding Path=LoginInProcess}" Value="False">
                <Setter Property="IsEnabled" Value="True" />
            </DataTrigger>
        </Style.Triggers>
    </Style>