正在页面加载的ListView中选择项目

时间:2013-08-23 17:21:49

标签: c# .net xaml windows-store-apps

我的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正在调用(填充listview并返回集合)。
  2. 调用SelectedSite,返回null
  3. 调用SelectedSite内部设置,将值设置为第一个项目
  4. 有谁知道为什么会发生这种情况?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

当我们将SelectedItem的{​​{1}}设置为ListView

时,通常会发生这种情况