C# 在MVVM中绑定ListPicker(选择已更改)
我正在尝试将命令附加到ListPicker的事件选择 我的xaml中有listpicker的以下代码:C# 在MVVM中绑定ListPicker(选择已更改),c#,xaml,windows-phone-8,mvvm,windows-phone,C#,Xaml,Windows Phone 8,Mvvm,Windows Phone,我正在尝试将命令附加到ListPicker的事件选择 我的xaml中有listpicker的以下代码: <toolkit:ListPicker x:name="picker" ItemsSource="{Binding Sentences}" SelectionChanged="{Binding PickerCommand, Mode=TwoWay}" > <toolkit:ListPicker.Ite
<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>
编辑:
我刚刚创建了这个简单的函数:
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,它有一些类可以提供帮助。不需要使用该语法将控件绑定到事件。您只需要:SelectionChanged=PickerCommand,但如何在viewmodel中编写这样的命令?在VM中创建一个名为SelectedSession的属性,并将其绑定到SelectedItem。您可以在虚拟机中检查这一点,然后在命令中采取相应的行动。完成了。你能为这个写一个代码吗?我仍然不知道该怎么做我对mvvmSorry是新手-我的错误,应该读两遍-下面是一个你想要的例子:谢谢你的回答,我必须放置什么来代替“ActionForPickerCommand”我只是放置了一个“public void function”,它只显示一个MessageBox,但我得到了一个错误,我如何在ViewModel中使用RelayCommand获取ListPicker的选定元素?非常感谢。对象应该是发送的对象的类型,不确定是否为SelectionChangedEventArgs,对于selectItem,您需要创建一个将绑定到选择器selectItem的属性-双向!!!我编辑了我最初的问题,你能告诉我为什么我传递的函数无效吗?
public class MYViewModel :ViewModelBase
{
public MyViewModel()
{
PickerCommand = new RelayCommand<object>(ActionForPickerCommand);
}
public ICommand PickerCommand {get;set;}
}