1

我正在使用 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>

删除命令:

public ICommand DeleteCommand
{
    get
    {
        return new MvxCommand<BulbItem>(item =>
        {
            _collectionService.Delete(item);
            Close(this);
        });
    }
}

如何将绑定到 BulbItems 列表的 ListBoxItem 传递到 DeleteCommand?

提前致谢!

4

2 回答 2

1

我认为您可能可以只替换????{Binding}- 在这种情况下, Path 是对DataContext自身对象的隐式绑定


除此之外,您还需要将DeleteCommand绑定路由到父对象的 DataContext - 我认为您可以使用某种绑定ElementNameRelativeSource绑定来做到这一点 - 但我不是这方面的专家。

通常我所做的是将我的命令放在我的列表项对象中 - 例如,在 MvxBindableListView 中查看 MVVMCross 更改 ViewModel 中的一些答案

于 2013-05-14T10:06:07.650 回答
0

为什么不将操作设置为在Click eventor上执行Tap event?像这样的东西:

<toolkit:MenuItem Header="Delete"  Click="deleteMenu_Click"/>

或者

<toolkit:MenuItem Header="Delete"  Tap="deleteMenu_Tap"/>

并在后面的代码中添加您的删除列表项代码。

于 2013-05-14T17:56:28.967 回答