2

我的 xaml 中有一个ListView,它的 ItemsSource 和 SelectedItem 属性绑定到 ViewModel。

Xaml

<ListView ItemsSource="{Binding SitesCollection}" SelectedItem="{Binding SelectedSite, Mode=TwoWay}">
    <ListView.ItemTemplate>
        <DataTemplate>
              <TextBlock Text="{Binding url}"></TextBlock>
         </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

视图模型

public ObservableCollection<AWRestrictedSite> _SitesCollection;
public ObservableCollection<AWRestrictedSite> SitesCollection
{
     get
     {
          //populate collection
          return _SitesCollection;
     }
}

public AWRestrictedSite _SelectedSite;
public AWRestrictedSite SelectedSite
{
      get
      {
          return _SelectedSite;
      }
      set
      {
          _SelectedSite = value;
          //do some stuff
      }
 }

由于某种原因,当页面加载时,它会选择 ListView 中的第一项。以下是页面加载时发生的情况:

  1. 进入 SitesCollection 被调用,(它填充列表视图并返回集合)。
  2. Get inside SelectedSite被调用,返回null
  3. 在 SelectedSite 内部设置被调用,它将值设置为第一项

有谁知道为什么会发生这种情况?

4

2 回答 2

0

它是一种双向绑定,当加载时,ListView(我认为)选择其绑定集合中的第一项。尝试在其中添加一个Loaded方法ListView并在其中设置SelectedItem。这应该在选择第一个项目后发生。

于 2014-02-12T13:04:49.400 回答
0

这通常发生在我们将SelectedItema设置ListViewItemsSourceCollection.FirstOrDefault()

于 2015-12-22T12:14:23.347 回答