【问题标题】:ListView SelectedItem Binding with Xamarin Forms and ReactiveUI IssueListView SelectedItem 绑定与 Xamarin 表单和 ReactiveUI 问题
【发布时间】:2015-11-05 19:24:49
【问题描述】:

我有一个显示名称的基本项目列表。单击其中一个列表项后,我需要导航到新屏幕。超级简单,对吧?我不知道这是哪里出了问题。

列表正在正确显示其项目。选择一个项目后,列表视图会突出显示相应的项目,但不会发生其他任何事情。我没有收到任何错误。就好像视图和视图模型没有正确连接,或者视图模型中的订阅设置不正确。我对 ReactiveUI 很陌生。

以下是我的代码的虚拟示例。

ItemListViewModel.cs

public IReactiveDerivedList<ItemTileViewModel> ItemTiles { get; protected set; }
public ItemTileViewModel SelectedItemTile { get; set; }

private void Initialize(){
     ItemTiles = LoadedItems.CreateDerivedCollection(item => new ItemTileViewModel(item));
     this.WhenAnyValue(x => x.SelectedItemTile)
            .Where(tile => tile != null)
            .Select(tile => tile.Model)
            .Subscribe(item =>
            {
                HostScreen.Router.Navigate.ExecuteAsync(new ItemViewModel(item));
                SelectedItemTile = null;
            });

     // We load the items
}

我不确定使用派生列表是否合适。我希望我没有提供足够的背景信息来提供反馈。

ItemListView.xaml.cs - 构造函数

this.OneWayBind(ViewModel, vm => vm.ItemTiles, v => v.ItemTiles.ItemsSource);
this.Bind(ViewModel, vm => vm.SelectedItemTile, v => v.ItemTiles.SelectedItem);

ItemListView.xaml

<ListView x:Name="ItemTiles">
    <ListView.ItemTemplate>
      <DataTemplate>
        <ViewCell>
          <views:ItemTileView ViewModel="{Binding}" />
        </ViewCell>
      </DataTemplate>
    </ListView.ItemTemplate>
 </ListView>

【问题讨论】:

    标签: xaml listview mvvm reactiveui xamarin-forms


    【解决方案1】:

    除非您简化了示例代码,否则问题应该存在:

    public ItemTileViewModel SelectedItemTile { get; set; }

    这是一个常规属性,在修改时永远不会生成任何事件(例如,在选择时由视图绑定设置)。

    您应该像任何 RxUI 属性一样编写它:

    string selectedItemTitle;
    public string SelectedItemTile {
        get { return selectedItemTitle; }
        set { this.RaiseAndSetIfChanged(ref selectedItemTitle, value); }
    }
    

    Reference

    【讨论】:

      猜你喜欢
      • 2018-01-03
      • 2021-11-08
      • 2021-01-28
      • 2023-03-25
      • 2018-11-15
      • 1970-01-01
      • 2016-10-10
      • 2018-07-07
      • 2018-08-05
      相关资源
      最近更新 更多