首页 文章

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

提问于
浏览
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>

ViewModel

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中的第一个项目 . 以下是页面加载时发生的情况:

  • 正在调用SitesCollection(填充列表视图并返回集合) .

  • 调用SelectedSite,返回null

  • 调用SelectedSite中的Set,将值设置为第一个项目

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

2 回答

  • 0

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

  • 0

    当我们将 ListViewSelectedItem 设置为 ItemsSourceCollection.FirstOrDefault() 时,通常会发生这种情况 .

相关问题