Xamarin Listview子绑定数据未发送回View Modal

时间:2018-10-15 16:05:54

标签: xamarin xamarin.forms xamarin.forms.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>

如上所示,组合框绑定到视图模型对象ItemSelectedFromList。当我们使用列表视图之外的组合框运行此控件时,两种方式的绑定是完美的,并且可以正确地将数据发送回去。但是,将组合框放入列表视图后,可以从视图模态中绑定数据,但是,当对组合框进行更改时,数据永远不会发送到视图模型。仔细观察,似乎该事件确实触发了,就像我们尝试使用下面的处理程序一样,发现在组合框中选择一个项目时确实触发了该事件

 private void DataPickList_SelectedIndexChanged(object sender, EventArgs e)
        {


        }

但是,当事件处于列表视图中时,该事件就永远不会发送回绑定到的实际视图模型(尽管当控件不在列表视图中时,以下事件也会被触发)

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

请注意,此问题不仅限于此组合列表控件。看来listview中的任何控件都不会将数据发送到viewmodel。有什么解决方法吗?

更新

根据下面的评论,我们添加了x:Name并引用了视图模型,但是change事件仍然没有被击中:

<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">

0 个答案:

没有答案