首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#计数项目

C#计数项目
EN

Stack Overflow用户
提问于 2018-03-11 02:53:54
回答 1查看 2.4K关注 0票数 1

我有三个领域的模型:TItleBodyStatus

代码语言:javascript
运行
复制
 public class Names
    {   [PrimaryKey]
        public string Title { get; set; }
        public string Body { get; set; }
        public string Status{ get; set; }}

当用户打开页面时,他可以看到带有字段的名称列表(TitleBody)。页面代码如下:

xaml.cs

代码语言:javascript
运行
复制
[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;
        }
    }

xaml

代码语言:javascript
运行
复制
   <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>

在页面的开头,我想添加字符串,它用Status = "New“显示所有项的数量。我怎么能做到呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-11 03:21:20

添加一个绑定到您的LabelCount属性的ObservableCollection (每次从集合中添加/删除项目时都会通知它):

代码语言:javascript
运行
复制
<Label Text="{Binding items.Count, StringFormat='Status = {0}'}"/>

更新

如果您需要自定义属性,比如具有"new“的Names对象的数量,可以使用多种方法创建可绑定的属性,但一种方法是将ObservableCollection子类并添加自定义属性:

代码语言:javascript
运行
复制
public class MyObservableCollection : ObservableCollection<Names>
{
    public MyObservableCollection()
    {
        CollectionChanged += (object sender, NotifyCollectionChangedEventArgs e) =>
        {
            OnPropertyChanged(new PropertyChangedEventArgs("NewCount"));
        };
    }

    public int NewCount
    {
        get { return this.Count((Names arg) => arg.Status == "new"); }
    }
}

现在将使用ObservableCollection替换为MyObservableCollection

代码语言:javascript
运行
复制
public MyObservableCollection items { get; set; }

在XAML中,现在可以在NewCount上绑定

代码语言:javascript
运行
复制
<Label Text="{Binding items.Count, StringFormat='Status = {0}'}"/>
<Label Text="{Binding items.NewCount, StringFormat='Status = {0}'}"/>

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49216174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档