将CommandParameter设置为ListBox(WP7)上当前点击的项目

Marek M.

我想将命令参数设置为ListBox上当前选定的项目。

XAML:

<!--<ListBox ItemsSource="{Binding Places}" SelectedItem="{Binding SelectedPlace, Mode=TwoWay}">-->
    <ListBox ItemsSource="{Binding Places}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="Tap">
                <i:InvokeCommandAction Command="{Binding ListBoxClick}" CommandParameter="{Binding}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
        <ListBox.ItemTemplate>
            <DataTemplate>
                (...)
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

C#(公开ListBoxClick命令的ViewModel代码的一部分)

public RelayCommand ListBoxClick { get; set; }

ListBoxClick = new RelayCommand((o) => {
    //model is always null
    var model = o as BasicModel;

    SelectedPlace = model;
});

我添加了适当的引用和名称空间:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

问题在于,在RelayCommand对象调用的操作中o参数始终为null。

更新

SelectedPlace属性的C#代码

public BasicModel SelectedPlace {
            get {
                return _selectedPlace;
            }
            set {
                _selectedPlace = value;
                RaisePropertyChanged("SelectedPlace");
            }
        }

当我使用这个:

<ListBox ItemsSource="{Binding Places}" SelectedItem="{Binding SelectedPlace, Mode=TwoWay}">

如果我第一次单击ListBoxItem,一切正常,但是当我单击选定的ListBoxItem时,什么也没有发生,因为选择不会更改。在这两种情况下,我都必须能够检测项目单击。

Marek M.

我想出了一种实现目标的丑陋方法。

XAML

<ListBox ItemsSource="{Binding Places}" SelectedItem="{Binding SelectedPlace, Mode=TwoWay}">

C#(ViewModel)

private bool _placeSelected;

public BasicModel SelectedPlace {
    get {
        return _selectedPlace;
    }
    set {
        _placeSelected = true;
        _selectedPlace = value;
        RaisePropertyChanged("SelectedPlace");
    }
}

ListBoxClick = new RelayCommand((o) => {
    if (!_placeSelected) {
        SelectedPlace = _selectedPlace;
    }
    else {
        _placeSelected = false;
    }
});

RaisePropertyChanged("SelectedPlace");在两种情况下都将调用此方式

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

WP7 ListBox所选项目未更改颜色

来自分类Dev

将项目从WP7升级到WP8后,活动磁贴不起作用

来自分类Dev

在wp7上运行项目时TargetInvocationException

来自分类Dev

从wp7中的longlistselector中删除特定项目

来自分类Dev

在wp7上运行项目时TargetInvocationException

来自分类Dev

目标WP7和WP8.1(8.0设备将获得WP7应用程序)吗?

来自分类Dev

将图像从WP7上传到Web Api

来自分类Dev

防止在全景项目或枢轴项目WP7 C#的最后一项上滚动

来自分类Dev

将点击设置为默认

来自分类Dev

我如何使用wp7在列表框中选择多个项目

来自分类Dev

从内部项目文本文件wp7填充数据库

来自分类Dev

如何在wp7中检查变量是否为空?

来自分类Dev

将vim当前工作目录设置为当前项目根目录或当前文件目录

来自分类Dev

将vim当前工作目录设置为当前项目的根目录或当前文件的目录

来自分类Dev

将 ListBox 中的项目排序为 Int

来自分类Dev

WP7:访问内置事件

来自分类Dev

倍数消息框-WP7

来自分类Dev

在wp7中禁用ApplicationBarIconButton

来自分类Dev

如何在wp7中将位图图像转换为字节数组?

来自分类Dev

将列表框的绑定文本块提取到字符串wp7

来自分类Dev

无法在wp7中将硬编码值插入sqlite

来自分类Dev

如何使用耳机插孔将数据发送到WP7或WP8中的电路板

来自分类Dev

点击将图像设置为UICollectionView Cell

来自分类Dev

将点击设置为未创建的元素

来自分类Dev

将功能的点击事件设置为按钮

来自分类Dev

RHEL7上当前的dhclient租约在哪里?

来自分类Dev

从WP7项目文件夹中的zip文件中读取字节数组

来自分类Dev

将谷歌地图设置为当前位置

来自分类Dev

将元素设置为不可点击,然后设置为可点击

Related 相关文章

热门标签

归档