Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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# 使用Xamarin将选定项从选择器传回视图模型,而不是整个对象_C#_Xamarin_Events_Mvvm - Fatal编程技术网

C# 使用Xamarin将选定项从选择器传回视图模型,而不是整个对象

C# 使用Xamarin将选定项从选择器传回视图模型,而不是整个对象,c#,xamarin,events,mvvm,C#,Xamarin,Events,Mvvm,因此,我有以下选择器,其中包含一个字符串列表作为项源。除了我不喜欢将整个对象传递回视图模型的方式外,其他一切都正常。我试图做的只是将所选项目传回viewmodel XAML: 基本上,我想完成的是以下几点: CommandParameter="{Reference EventTypePicker.SelectedItem}" 而不是: CommandParameter="{Reference EventTypePicker}" 您已经将SelectedItem绑定到视图模型上名为Event

因此,我有以下选择器,其中包含一个字符串列表作为项源。除了我不喜欢将整个对象传递回视图模型的方式外,其他一切都正常。我试图做的只是将所选项目传回viewmodel

XAML:

基本上,我想完成的是以下几点:

CommandParameter="{Reference EventTypePicker.SelectedItem}" 
而不是:

CommandParameter="{Reference EventTypePicker}"

您已经将SelectedItem绑定到视图模型上名为EventType的属性。你应该可以直接使用这个属性

在XAML中,可以删除CommandParameter:

<Picker x:Name="EventTypePicker" ItemsSource="{Binding EventTypes}" SelectedItem="{Binding EventType}">
    <Picker.Behaviors>
        <behaviors:EventHandlerBehavior EventName="SelectedIndexChanged">
            <behaviors:InvokeCommandAction Command="{Binding EventTypePickerSelectionChangeCommand}" />
        </behaviors:EventHandlerBehavior>
    </Picker.Behaviors>
</Picker>

@安德鲁·德普想得太多了。谢谢你注意到这一点。
CommandParameter="{Reference EventTypePicker}"
<Picker x:Name="EventTypePicker" ItemsSource="{Binding EventTypes}" SelectedItem="{Binding EventType}">
    <Picker.Behaviors>
        <behaviors:EventHandlerBehavior EventName="SelectedIndexChanged">
            <behaviors:InvokeCommandAction Command="{Binding EventTypePickerSelectionChangeCommand}" />
        </behaviors:EventHandlerBehavior>
    </Picker.Behaviors>
</Picker>
private void OnEventTypeChange() {
    var selectedItem = EventType;
}