想要有条件地在列表视图中显示数据

时间:2017-02-08 09:32:22

标签: xamarin

在Xamarin Forms中,我有一个列表视图,显示项目表的所有项目。我只想显示已批准“状态”的项目。我怎样才能做到这一点?我在哪里通过'where status ='approved''条件。

这是我的XAML代码:

    <ViewModels:ItemViewModel/>

</ContentPage.BindingContext>

<ListView ItemsSource="{Binding ItemsList}"

          HasUnevenRows="True" 
          x:Name="lstItems"
         ItemTapped="LstItems_OnItemTapped">





    <ListView.ItemTemplate>

        <DataTemplate>

            <ViewCell>

                <StackLayout Orientation="Horizontal">

                    <Label Text="{Binding ItemCode}" TextColor="Blue"/>
                <Label Text="{Binding ItemDesc}"  TextColor="Blue"/>


                </StackLayout>

            </ViewCell>

        </DataTemplate>


    </ListView.ItemTemplate>

</ListView>

我的观看模型如下:

命名空间MyFirstDbApp.ViewModels {     公共类ItemViewModel:INotifyPropertyChanged     {         私人列表_itemsList;

    public List<Item> ItemsList



    {
        get { return _itemsList; }

        set
        {
            _itemsList = value;
            OnPropertyChanged();
        }
    }

    public ItemViewModel()
    {

        InitializeDataAsync();
    }


    private async Task InitializeDataAsync()
    {

        var ItemServices = new ItemServices();

        ItemsList = await ItemServices.GetItemsAsync();

    }


    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

}

实施新代码的错误:

var result = await ItemServices.GetItemsAsync()。ConfigureAwait();  ItemsList = result.Where(x =&gt; x.Status ==“已批准”

行:1 - 非静态字段,方法或属性需要对象引用ItemServices.GetItemsAsync

行:1 - 没有方法的重载'ConfigureAwait'需要0个argurments

行:2 - 无法将SourceType'Systems.Collection.Generic.IEnumerable'转换为目标类型'系统。 Colelction.GenericList'

1 个答案:

答案 0 :(得分:0)

应在ViewModel中的ItemsList上进行过滤,而不是在XAML中。

_viewModel.ItemsList.Where(x => x.Status == "Approved");
祝你好运: - )