Вернуть выбранный элемент из палитры для просмотра модели вместо всего объекта с помощью Xamarin - PullRequest
0 голосов
/ 01 мая 2020

Так что у меня есть следующий сборщик со списком строк в качестве источника элемента. Все работает отлично, за исключением того, что мне не нравится, как я должен передавать весь объект обратно в модель представления. То, что я пытаюсь сделать, это только передать выбранный элемент в viewmodel.

XAML:

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

ViewModel:

//obj is the picker object. Would prefer for this just to be the selected item
private void OnEventTypeChange(object obj) {
    var picker = ((Xamarin.Forms.Picker) obj).SelectedItem.ToString();
}

По существу, что я хотел бы Совершенно sh выглядит примерно так:

CommandParameter="{Reference EventTypePicker.SelectedItem}" 

Вместо:

CommandParameter="{Reference EventTypePicker}"

1 Ответ

1 голос
/ 01 мая 2020

Вы уже связываете 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>

А затем в модели представления проверьте свойство EventType:

private void OnEventTypeChange() {
    var selectedItem = EventType;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...