SelectedItem绑定未更新ViewModel

时间:2018-07-12 00:51:19

标签: xaml xamarin xamarin.forms

我觉得我缺少明显的东西,因为这很简单。先谢谢您的帮助。我正在努力在Xamarin应用程序中绑定简单ListView的SelectedItem。我正在UWP上进行测试,并且正在使用Prism的MVVM BindableBase基类。这是我正在经历的:

  1. 页面加载完毕,列表中没有任何内容被选中。
  2. 我在列表中选择了一个项目。
  3. SelectedGrade的{​​{1}}调用value的二传手。
  4. 此后,选择项目不会导致调用null setter。

以下是相关的XAML:

SelectedGrade

这是ViewModel:

<ListView BackgroundColor="#7F7F7F"
          CachingStrategy="RecycleElement"
          IsPullToRefreshEnabled="True"
          IsRefreshing="{Binding IsBusy, Mode=OneWay}"
          ItemsSource="{Binding Grades, Mode=OneWay}"
          SelectedItem="{Binding SelectedGrade, Mode=TwoWay}"
          RefreshCommand="{Binding RefreshCommand}"
          RowHeight="50">

    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <StackLayout HorizontalOptions="FillAndExpand"
                             VerticalOptions="CenterAndExpand"
                             Orientation="Horizontal"
                             Padding="10">
                    <Label HorizontalOptions="FillAndExpand"
                           Text="{Binding Title}"
                           TextColor="#272832"/>
                    <Label HorizontalOptions="FillAndExpand"
                           Text="{Binding Score}"
                           TextColor="Aquamarine" />
                </StackLayout>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>                
</ListView>

编辑:我还在代码后面添加了一个Grade _selectedGrade; public Grade SelectedGrade { get { return _selectedGrade; } set { SetProperty(ref _selectedGrade, value); } // this gets set to NULL the first time i select an item then never gets set again } 事件侦听器,并且在选择初始项后不会将其触发。触发一次,ItemSelected揭示ListView的SelectedItemChangedEventArgs为空。正如我期望的那样,这时我还可以看到ListView的ItemsSource包含三个项的集合。我对为什么ListView认为SelectedItem为null以及为什么在所选项目更改时不广播而感到困惑。

1 个答案:

答案 0 :(得分:0)

这似乎是Xamarin中的错误。我从Xamarin.Forms 3.0.0.550146升级到3.1.0.637273,现在可以使用了。