【发布时间】:2017-03-11 21:02:19
【问题描述】:
我是 MVVM 新手,有一些我不明白的地方。我到目前为止的代码:
在 ItemListPage.xaml 中:
<ListView ItemsSource="{Binding itemList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding itemSelected, Mode=TwoWay}"
ItemClick="{x:Bind ViewModel.ClickItemList}">
在 ItemListViewModel.cs 中:
private List<Item> _itemList;
public List<Item> itemList { get { return _itemList; } set { Set(ref _itemList, value); } }
private Item _itemSelected;
public Item itemSelected { get { return _itemSelected; } set { Set(ref _itemSelected, value); } }
public void ClickItemList()
{
System.Diagnostics.Debug.WriteLine("Click on itemlist");
if (itemSelected != null)
{
((App)App.Current)._itemID = itemSelected._ID;
NavigationService.Navigate(typeof(Views.ShowItem));
}
}
我遇到的问题是在我第一次点击一个项目时,调用了函数 ClickItemList 但属性 itemSelected 仍然是空的,所以我需要第二次点击一个项目来实际执行我想做的操作(保存此项目的 ID 并导航到下一页)。我怎样才能改变我的代码来做到这一点?
除了这个问题,我不明白为什么我应该使用2个属性(例如私有属性_itemSelected和公共“假”属性itemSelected),为什么我不能只使用一个?
【问题讨论】:
-
什么是 ItemClick 属性?这不是标准的 WPF ListView 事件。
-
我一直使用那个属性。“当列表视图中的项目接收到交互时发生,并且 IsItemClickEnabled 属性为 true。(继承自 ListViewBase)”来源:msdn.microsoft.com/en-us/library/windows/apps/…
-
哦...你没有提到它是一个通用应用程序:)。标准 WPF 没有。