C#计算Xamarin的项目

C#计算Xamarin的项目,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我的模型有3个字段:标题,正文,状态 public class Names { [PrimaryKey] public string Title { get; set; } public string Body { get; set; } public string Status{ get; set; }} 当用户打开页面时,他可以看到带有字段的名称列表(Title,Body)。 页面的代码如下所示: xaml.cs [XamlCo

我的模型有3个字段:
标题
正文
状态

 public class Names
    {   [PrimaryKey]
        public string Title { get; set; }
        public string Body { get; set; }
        public string Status{ get; set; }}
当用户打开页面时,他可以看到带有字段的名称列表(
Title
Body
)。 页面的代码如下所示:

xaml.cs

[XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class HomePage : ContentPage
    {
        public ObservableCollection<Models.Names> items { get; set; }

        public HomePage()
        {
            items = new ObservableCollection<Models.Names>();
            this.BindingContext = this;
            InitializeComponent();
            List.ItemSelected += (sender, e) => {
                ((ListView)sender).SelectedItem = null;
            };
            List.Refreshing += (sender, e) => {
                LoadUsersData();
            };
            LoadUsersData();
        }
        public async void LoadUsersData()
        {
            List.IsRefreshing = true;
            var Names= await App.Database.Names.GetItemsAsync();
            items.Clear();
            foreach (var item in Names)
                items.Add(item);
            List.IsRefreshing = false;
        }
    }
[XamlCompilation(XamlCompilationOptions.Compile)]
公共部分类主页:ContentPage
{
公共ObservableCollection项{get;set;}
公共网页()
{
items=新的ObservableCollection();
this.BindingContext=this;
初始化组件();
List.ItemSelected+=(发件人,e)=>{
((列表视图)发件人)。选择EdItem=null;
};
列表。刷新+=(发件人,e)=>{
LoadUsersData();
};
LoadUsersData();
}
公共异步void LoadUsersData()
{
List.IsRefreshing=true;
var Names=wait App.Database.Names.GetItemsAsync();
items.Clear();
foreach(名称中的变量项)
项目。添加(项目);
List.IsRefreshing=false;
}
}
xaml

   <StackLayout>
        <ListView x:Name="List"
                  HasUnevenRows="True"
                  ItemsSource="{Binding items}"
                  IsPullToRefreshEnabled="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextCell 
                        Text="{Binding Title}" 
                        Detail="{Binding Body}"
                        TextColor="Black"
                        DetailColor="Gray">
                    </TextCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>

在页面的开头,我想添加一个字符串,显示状态为“新建”的所有项目的数量。
如何操作?

添加一个
标签
,该标签绑定到
ObservableCollection
计数
属性(每次从收藏中添加/删除项目时都会通知它):

现在,用MyObservableCollection替换使用的
ObservableCollection

public MyObservableCollection items { get; set; }
在XAML中,您现在可以绑定到
NewCount

<Label Text="{Binding items.Count, StringFormat='Status = {0}'}"/>
<Label Text="{Binding items.NewCount, StringFormat='Status = {0}'}"/>

就使用
BindableProperty
而言,已经发布了其他SO问题/答案和一篇很棒的博客文章:


非常感谢,它很有效。1个小问题,如果我需要获得2个标签,例如:1个标签将统计name=“new”状态列表中的项目,下一个标签将统计name=“old”状态列表中的项目,这是否意味着我需要再添加2个ObservableCollections并针对每个标签结果对其进行过滤?或者有更好的方法可以做到这一点?@Dmitry有一种比维护多个集合更好的方法,请参阅我的更新答案…您尝试过使用Linq吗?@SushiHangover效果很好,再次感谢您的回答。
public MyObservableCollection items { get; set; }
<Label Text="{Binding items.Count, StringFormat='Status = {0}'}"/>
<Label Text="{Binding items.NewCount, StringFormat='Status = {0}'}"/>