【问题标题】:remove an item form a Listbox @windows phone 7从列表框中删除项目@windows phone 7
【发布时间】:2011-01-11 04:55:28
【问题描述】:

嘿, 我正在尝试使用 contectmenu 工具包从数据绑定列表框中删除一个项目。 remove 方法要求我插入一个项目的名称,但我找不到它。

这里是添加项目的功能

{
                listObjetDevis.Add(new itemListBoxSave { 
                 devis = tbCreerDevis.Text });

                IsolatedStorageHelper.SaveObject("devis", listObjetDevis);
            }

谢谢帮助

【问题讨论】:

  • 您要删除哪个项目?
  • 好吧,我得到了一个与列表框数据绑定的文本框。当用户从列表框中持有一个项目时,它会显示一个上下文菜单,其中我有另一个按钮“删除”我想从列表框中删除选定的项目并使用上下文菜单。 ty

标签: windows-phone-7 listbox


【解决方案1】:

这是一个简单的示例,说明如何执行此操作,您应该能够根据自己的项目/需求进行自定义。

  1. 创建一个新的 DataBound 应用程序。

  2. 添加对工具包的引用。

  3. 将以下内容添加到 MainPage 的 XAML 声明中:

    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

  4. 将 ListBox.ItemTemplate 更改为以下内容:

    <DataTemplate>
        <StackPanel Margin="0,0,0,17" Width="432">
            <toolkit:ContextMenuService.ContextMenu>
                <toolkit:ContextMenu>
                    <toolkit:MenuItem Header="delete" Click="ContextMenuDelete_Click"/>
                </toolkit:ContextMenu>
            </toolkit:ContextMenuService.ContextMenu>
            <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
            <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        </StackPanel>
    </DataTemplate>
    
  5. 将以下事件处理程序添加到后面的代码中:

私人无效ContextMenuDeleteClick(对象发送者,RoutedEventArgs e) { App.ViewModel.Items.Remove((sender as MenuItem).DataContext as ItemViewModel); }

【讨论】:

  • 我已经尝试过了,但是错误 2 找不到类型或命名空间名称“ItemViewModel”(您是否缺少 using 指令或程序集引用?)
  • @user569574 ItemViewModel 由项目模板在 ViewModels 文件夹中创建。请参阅cid-cc22250598bf7f04.office.live.com/self.aspx/Public/… 的工作示例
  • 是否可以使用 Command 和 CommandArgument 属性做同样的事情?
【解决方案2】:

简单地说:如果您使用listObjetDevis.Add 添加项目,您不想使用listObjetDevis.RemoveAt(list.SelectedIndex) 或listObjetDevis.Remove(list.SelectedItem) 删除项目吗?

【讨论】:

  • 它不起作用怎么办?用户界面不更新?你在使用 ObservableCollection 吗?如果您没有使用可观察集合,则不会通知列表框某些内容已被删除。
  • 是的,我使用 observableCollection,但是当我尝试您的解决方案时,它告诉我“selectedindex”或“selecteditem”不是有效的定义等
  • 你在使用 ListBox 吗? (msdn.microsoft.com/en-us/library/…)还是ListView? (msdn.microsoft.com/en-us/library/…) 它们都有公共属性SelectedItem 和SelectedIndex,所以我不确定你是如何使用它们的。澄清一下:所选项目位于 view 上,然后您将从 *collection 中删除它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2014-08-30
  • 1970-01-01
  • 2011-11-05
  • 2020-12-07
相关资源
最近更新 更多