【发布时间】:2013-08-23 17:21:49
【问题描述】:
我的 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 中的第一项。以下是页面加载时发生的情况:
- 正在调用进入 SitesCollection(它填充列表视图并返回集合)。
- 调用Get inside SelectedSite,返回null
- 调用 SelectedSite 内的 Set 将值设置为第一项
有谁知道为什么会发生这种情况?
【问题讨论】:
-
这很奇怪。我有一个看起来和这个几乎完全相同的控件,并且最初没有选择任何内容。也许在初始化期间发生了将
SelectedSite设置为不为空的事情? -
嗯,是的,在初始化期间以某种方式设置了 SelectedSite。我已经仔细检查过,我没有在设置 SelectedSite 方面做任何事情。
-
实际上,我想我知道为什么了。这与我的应用程序的设置方式有关。我在不同的页面上有一个 TextBlock 和一个按钮。当您按下按钮或在文本框上按下回车键时,它会将您带到此页面(使用列表视图)。并且这个错误(选择了项目)仅在按下 enter 时发生。所以我认为这与页面加载时仍以某种方式按下回车键有关,因此选择了该项目。
标签: c# .net xaml windows-store-apps