【发布时间】:2014-05-23 05:35:52
【问题描述】:
我有这样的设置:
ViewModel sn-p:
private ObservableCollection<Field> _Fields;
public ObservableCollection<Field> Fields
{
get
{
return _Fields;
}
set
{
NotifyPropertyChanged(ref _Fields, value, "Fields");
}
}
private Field _SelectedField;
public Field SelectedField
{
get
{
return _SelectedField;
}
set
{
NotifyPropertyChanged(ref _SelectedField, value, "SelectedField");
}
}
XAML:
<ListBox x:Name="FieldList" ItemsSource="{Binding Fields}" SelectedValue="{Binding SelectedField}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我非常频繁地更新字段集合,如下所示:
List<Field> myFieldList = myDataSource.GetFields();
Fields = new ObservableCollection<Field>(myFieldList);
当我这样做时,列表框会自动默认选择第一项。我希望它默认不选择任何内容(例如SelectedIndex = -1 或SelectedValue = null)。我怎样才能做到这一点?
【问题讨论】:
-
我试图重现它,但没有成功。我有一个
ListBox和一个ItemsSource绑定。它没有选择我的第一个项目。你确定它不在你的代码中吗? -
我认为这并不重要,但也许确实如此......我编辑了我的问题,因为我还将列表框的 SelectedValue 绑定到我的 VM 上的一个属性。 没有代码设置此值,我很肯定这是某种默认的 WPF 行为。