Данные дочерней привязки Xamarin Listview не отправляются обратно в модальное представление
В нашем проекте Xamarin есть дочерний элемент управления (syncfusion), который находится внутри родительского элемента 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>
Как показано выше, комбинированный список связан с объектом Viewmodel ItemSelectedFromList. Когда мы запускаем это с помощью выпадающего списка за пределами списка, двухстороннее связывание является идеальным, и оно возвращает данные обратно правильно. Однако, когда комбинированный список помещается в просмотр списка, данные могут быть связаны с модальным представлением, однако, когда в комбинированный список вносятся изменения, данные никогда не отправляются в модель представления. Если присмотреться, то кажется, что событие действительно срабатывает, как мы пытались использовать обработчик ниже, и обнаружили, что оно получает удар при выборе элемента в выпадающем списке.
private void DataPickList_SelectedIndexChanged(object sender, EventArgs e)
{
}
Однако событие никогда не отправляется обратно к фактической модели представления, с которой оно связано, когда оно находится внутри списка (хотя, событие ниже получает удар, когда элемент управления не находится в просмотре списка)
FormattedOptions itemSelectedFromList;
public FormattedOptions ItemSelectedFromList
{
get => this.itemSelectedFromList;
set => this.RaiseAndSetIfChanged(ref this.itemSelectedFromList, value);
}
Обратите внимание, что проблема не относится только к этому комболистическому элементу управления. Кажется, что любой элемент управления внутри списка не получает данные, отправленные в модель представления. Есть ли какое-либо решение или способ обойти это?
ОБНОВИТЬ
В соответствии с комментарием ниже, мы добавили a x:Name и ссылку на модель представления, однако это событие изменения все еще не получает:
<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">