Как мы можем определить вид выбранного предмета выбора в Xamarin? - PullRequest
0 голосов
/ 24 сентября 2018

Как мы можем определить вид выбранного элемента из сборщик в Xamarin?

У нас есть одно представление, т.е. SearchPage.xaml .И одна ViewModel этого представления, т.е. SearchPageVm.cs .У нас есть несколько средств выбора, и элементы управления доступны на странице поиска.

У нас есть пять вкладок, т.е. Tab1, Tab2, Tab3, Tab4, Tab5.И каждая вкладка содержит вид страницы поиска.Пожалуйста, обратите внимание, что здесь мы создаем один экземпляр модели представления Page Search и один и тот же экземпляр привязывается к каждому новому экземпляру SearchPageView, который используется на разных вкладках.

Если выбрана вкладка Tab1 и пользователь выбираетпредмет сборщика1.Свойство SelectItem, привязанное к Picker1, доступно в SearchPageVm.Мы получаем 5 вызовов, и мы не можем определить, какой View вызывает этот вызов.

Мы хотим выполнить действие, но только один раз.

Пример кода:

SearchPage.xaml

 <ContentView xmlns="http://xamarin.com/schemas/2014/forms"
                         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                         xmlns:System="clr-namespace:System;assembly=netstandard"
                         xmlns:SearchVm="clr-namespace:MyApplication.ViewModel;assembly=MyApplication"
                         x:Class="MyApplication.Views.SearchPage"
                         BindingContext="{x:Static SearchVm:CommonDataCache.SearchPageVmInstance}">

                <ScrollView Orientation="Both" IsClippedToBounds="True" Padding="0,0,10,0">
                    <StackLayout x:Name="ControlStackLeft">
                        <customControls:SearchPageGrid
                            VisibleOnPages="Tab1,Tab2,Tab3,Tab4,Tab5">
                            <Label Grid.Row="0" Grid.Column="0" Text="Item1" />
                            <Picker Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2"
                                    HorizontalOptions="FillAndExpand"
                                    ItemsSource="{Binding Item1List}"
                                    ItemDisplayBinding="{Binding Name}"
                                    SelectedItem="{Binding SelectItem1,Mode=TwoWay}" />
                        </customControls:SearchPageGrid>
                    </StackLayout>
                </ScrollView>

SearchPageVm.cs:

    private string _selectedItem1;

    public string SelectedItem1
    {
        get => _selectedItem1;
        set
        {
            _selectedItem1 = value;
            OnPropertyChanged(nameof(SelectedItem1));
            if (SelectedItem1 != null)
                //Perform some Action
        }
    }

Tab1.xaml:

<StackLayout Orientation="Vertical" Margin="0,0,0,0" Grid.Row="0">
            <ScrollView HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Orientation="Horizontal"
                        IsClippedToBounds="True">
                <views:SearchPage x:Name="SearchView" />
            </ScrollView>
        </StackLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...