【问题标题】:Windows Phone 7 - passing selected item (listbox databound to ObservableCollection) to "update" pageWindows Phone 7 - 将所选项目(列表框数据绑定到 ObservableCollection)传递到“更新”页面
【发布时间】:2012-03-18 13:15:05
【问题描述】:

我正在编写一个应该非常基本的 Windows Phone 7 应用程序。

我有一个视图模型(“MainViewModel”),其中包含我创建的一个类(“EntrySheet”),其中包含一个 ObservableCollection(我将其称为“Entries”)。

我的 MainPage.xaml 包含一个数据绑定到 App.ViewModel.EntrySheet.Entries 的列表框。这非常适合显示列表,并且向 ObservableCollection 添加条目会反映在 ListBox 中。

但是,我无法理解的是将选定条目“传递”到更新页面的正确方法(这将允许用户更改条目上的字段:姓名、金额、日期,无论何时导航回 MainPage 将反映在 ListBox 中)。

我猜我期望在 ObservableCollection 上有一个“SelectedItem”,我可以导航到更新页面,该页面将能够使用类似:App.ViewModel.EntrySheet.Entries.SelectedItem。

我非常感谢在这方面的任何帮助,也欢迎对如何更好地构建我的应用提出建设性的批评。

【问题讨论】:

  • 有人对此有任何意见吗?任何帮助将不胜感激。
  • 我想出了一种可能的解决方案,但感觉……很乱。我添加了我的类 'Entry' 的静态实例和一个名为 selectedIdx 的整数 当用户“点击”列表中的项目时,我将 App.Entry 设置为点击的列表项目,设置选定的索引,然后导航到编辑页面。在编辑页面中,当用户单击“保存”时,我可以使用所选索引更新 App.ViewModel 中的正确条目。这似乎不是“正确”的解决方案,但如果其他人都这样做,我会学会接受它!

标签: windows-phone-7 data-binding listbox observablecollection


【解决方案1】:

我知道这是一个迟到的答案,但我现在偶然发现了你的问题。

这里有一个可能的解决方案:

XAML

<ListBox Name="listBox" Tap="listBox_Tap">
    <!-- Some code -->
</ListBox>

C#

private void listBox_Tap(object sender, GestureEventArgs e)
{
    DataObject dataObject = (sender as ListBox).SelectedItem as DataObject;
    //Do something with dataObject
}

这将使您能够与列表框中所选项目后面的数据对象进行交互。

感谢Windows Phone Geek

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    相关资源
    最近更新 更多