我正在使用Microsoft.Phone.Controls.Toolkit中的ContextMenu:
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
想要通过DeleteCommand删除ListBoxItem
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu >
<toolkit:MenuItem Header="Delete" Command="{Binding DeleteCommand}" CommandParameter="????"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" HorizontalAlignment="Left" VerticalAlignment="Center" TextWrapping="Wrap"/>
<toolkit:ToggleSwitch Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
的DeleteCommand:
public ICommand DeleteCommand
{
get
{
return new MvxCommand<BulbItem>(item =>
{
_collectionService.Delete(item);
Close(this);
});
}
}
如何将绑定到BulbItems列表的ListBoxItem传递给DeleteCommand?
提前致谢!
答案 0 :(得分:1)
我认为您可能只能将????
替换为{Binding}
- 在这种情况下,Path是对DataContext
中对象的隐式绑定本身
除此之外,您还需要将DeleteCommand
绑定路由到父对象的DataContext - 我认为您可以使用某种ElementName
或RelativeSource
绑定来实现这一点 - 但是我不是这方面的专家。
一般来说,我所做的就是将我的命令放在我的列表项对象中 - 例如请参阅MVVMCross changing ViewModel within a MvxBindableListView
中的部分答案答案 1 :(得分:0)
为什么不将操作设置为在Click event
或Tap event
上执行?
像这样:
<toolkit:MenuItem Header="Delete" Click="deleteMenu_Click"/>
或强>
<toolkit:MenuItem Header="Delete" Tap="deleteMenu_Tap"/>
在后面的代码中添加删除列表项代码。