我正在尝试将命令附加到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>
句子只是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);
但是我有一个错误,说我传递的参数无效,为什么呢?
最佳答案
您需要这样做:
<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,它提供了一些帮助。
关于c# - 在MVVM中绑定(bind)ListPicker(Selection_Changed),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24536285/