Данные дочерней привязки Xamarin Listview не отправляются обратно в модальное представление - PullRequest
0 голосов
/ 15 октября 2018

У нас есть дочерний (syncfusion) элемент управления комбинированного списка в нашем проекте Xamarin, который находится внутри родительского элемента ListView, как показано ниже.

<ListView x:Name="llistView" ItemsSource="{Binding QuantityRows}" HasUnevenRows="True" SeparatorVisibility="None" SelectionMode="None">
        <ListView.ItemTemplate>
            <DataTemplate>
                  <ViewCell>
                    <StackLayout VerticalOptions="Start" HorizontalOptions="Start" Padding="30">
                        <Label Text="{Binding FieldDescription}"></Label>
                        <combobox:SfComboBox HeightRequest="40" x:Name="comboBox"  SelectedValue="{Binding ItemSelectedFromList}" IsVisible="False" DisplayMemberPath = "Name" DataSource="{Binding Listing, Mode=TwoWay}">
                            <combobox:SfComboBox.Triggers>
                                <DataTrigger TargetType="combobox:SfComboBox"
                                Binding="{Binding FieldStringType}"
                                   Value="picklist">
                                    <Setter Property="IsVisible" Value="true" />
                                </DataTrigger>
                            </combobox:SfComboBox.Triggers>
                        </combobox:SfComboBox>
           </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Как показано выше, комбинированный список привязан к объекту модели представления ItemSelectedFromList.Когда мы запускаем это с помощью выпадающего списка за пределами списка, двухстороннее связывание является идеальным, и оно возвращает данные обратно правильно.Однако, когда комбинированный список помещается в просмотр списка, данные могут быть связаны с модальным представлением, однако, когда в комбинированный список вносятся изменения, данные никогда не отправляются в модель представления.Если присмотреться, то кажется, что событие действительно запускается, как мы пытались использовать обработчик ниже, и обнаружили, что оно получает удар при выборе элемента в выпадающем списке

 private void DataPickList_SelectedIndexChanged(object sender, EventArgs e)
        {


        }

Однако событие никогда не отправляетсявернуться к фактической модели представления, с которой он связан, когда он находится внутри просмотра списка (хотя событие, приведенное ниже, действительно срабатывает, когда элемент управления не находится в просмотре списка)

  FormattedOptions itemSelectedFromList;
        public FormattedOptions ItemSelectedFromList
        {
            get => this.itemSelectedFromList;
            set => this.RaiseAndSetIfChanged(ref this.itemSelectedFromList, value);
        }

Обратите внимание, что проблема не относится только кэтот комболистный контроль.Кажется, что любой элемент управления внутри списка не получает данные, отправленные в модель представления.Есть ли какое-либо исправление или способ обойти это?

ОБНОВЛЕНИЕ

Согласно комментарию ниже, мы добавили ax: Имя и ссылку на модель представления, однако это событие изменения по-прежнему не делает.не получено:

<combobox:SfComboBox HeightRequest="40" x:Name="comboBox" SelectedValue= "{Binding Source={x:Reference PagesName}, Path=BindingContext.ItemSelectedFromList}"  IsVisible="False" DisplayMemberPath = "Name" DataSource="{Binding Listing, Mode=TwoWay}">

Который ссылается на атрибут x: Name на странице

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             ....
             x:Name="PagesName">
...