【发布时间】:2012-06-06 04:26:22
【问题描述】:
我正在使用 ItemsControl,我想确定在 Tap 命令上选择了哪个项目。我的 xaml 在这里定义:
<ItemsControl ItemsSource="{Binding AllMyItems}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<cmd:EventToCommand Command="{Binding ItemSelectedCommand}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
.... item template ....
这是我的视图模型:
public RelayCommand<MyItem> ItemSelectedCommand { get; private set; }
public MainViewModel()
{
ItemSelectedCommand = new RelayCommand<MyItem>(ItemSelected);
}
private void ItemSelected(MyItem myItem)
{
throw new NotImplementedException();
}
命令的事件有效,但是当我到达 ItemSelected 方法时,myItem 要么为 Null,要么我得到一个异常转换它(取决于我如何在 xaml 中定义 CommandParameter)。
如果我使用 ListBox 并设置 CommandParameter="{Binding SelectedItem, ElementName=MyItemsList"},我可以做到这一点
关于如何使用 ItemsControl 执行此操作的任何想法?或者性能差异在 Mango 中两者之间没有太大区别?
【问题讨论】:
标签: windows-phone-7 mvvm-light relaycommand eventtocommand