我正在尝试将命令附加到ListPicker的事件Selection_Changed
我的xaml中的listpicker有以下代码:
<toolkit:ListPicker
x:name="picker" ItemsSource="{Binding Sentences}"
SelectionChanged="{Binding PickerCommand, Mode=TwoWay}" >
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }"/>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
</toolkit:ListPicker>
Sentences只是我的ViewModel中的一个字符串列表,我如何创建一个简单的Commad,例如,它将在ListPicker中显示一个带有当前所选字符串的MessageBox?
类似于我在代码Behind中编写的这个函数:
private void PickerCommand(object sender, SelectionChangedEventArgs e)
{
if (piker.SelectedItem != null)
{
MessageBox.Show(piker.SelectedItem.ToString());
}
}
编辑:
我刚刚创建了这个简单的函数:
public void Test()
{
MessageBox.Show("Test!");
}
通过了它:
PickerCommand = new RelayCommand<SelectionChangedEventArgs>(Test);
但我有错误说我通过的论证无效,为什么会这样?
答案 0 :(得分:0)
你需要这样做:
<toolkit:ListPicker x:name="picker" ItemsSource="{Binding Sentences}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<command:EventToCommand Command="{Binding PickerCommand, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding }"/>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
然后
public class MYViewModel :ViewModelBase
{
public MyViewModel()
{
PickerCommand = new RelayCommand<object>(ActionForPickerCommand);
}
public ICommand PickerCommand {get;set;}
}
使用MVVM Light,它有一些帮助它的类。