Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVVM中绑定ListPicker(选择已更改)_C#_Xaml_Windows Phone 8_Mvvm_Windows Phone - Fatal编程技术网

C# 在MVVM中绑定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

我正在尝试将命令附加到ListPicker的事件选择

我的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>
编辑:

我刚刚创建了这个简单的函数:

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;}
}