首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当TextCell只是一个List<string>时,如何定制ItemSource?

当TextCell只是一个List<string>时,可以通过继承自Cell的自定义单元格类来定制ItemSource。以下是一个示例:

代码语言:txt
复制
public class CustomTextCell : Cell
{
    public static readonly BindableProperty ItemsSourceProperty =
        BindableProperty.Create(nameof(ItemsSource), typeof(List<string>), typeof(CustomTextCell), null);

    public List<string> ItemsSource
    {
        get { return (List<string>)GetValue(ItemsSourceProperty); }
        set { SetValue(ItemsSourceProperty, value); }
    }

    public CustomTextCell()
    {
        View = new StackLayout();
        ((StackLayout)View).Children.Add(new Label());
    }

    protected override void OnBindingContextChanged()
    {
        base.OnBindingContextChanged();

        if (ItemsSource != null && ItemsSource.Count > 0)
        {
            ((Label)((StackLayout)View).Children[0]).Text = string.Join(", ", ItemsSource);
        }
    }
}

在上述示例中,我们创建了一个名为CustomTextCell的自定义单元格类,继承自Cell。该类具有一个名为ItemsSource的绑定属性,用于设置List<string>类型的数据源。在构造函数中,我们创建了一个StackLayout,并将一个Label添加到其中。在OnBindingContextChanged方法中,我们根据ItemsSource的值更新Label的文本,将List<string>中的所有元素以逗号分隔的形式显示出来。

使用该自定义单元格类时,可以将其作为ListView的ItemTemplate,并将List<string>赋值给ItemsSource属性。例如:

代码语言:txt
复制
var listView = new ListView();
listView.ItemTemplate = new DataTemplate(typeof(CustomTextCell));
listView.ItemsSource = new List<string> { "Item 1", "Item 2", "Item 3" };

这样,ListView中的每个项都将使用CustomTextCell来显示List<string>中的元素。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云开发者平台:https://cloud.tencent.com/developer
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb-for-mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动应用开发平台(MPS):https://cloud.tencent.com/product/mps
  • 腾讯区块链服务(TBCS):https://cloud.tencent.com/product/tbcs
  • 腾讯云元宇宙(Tencent Cloud Metaverse):https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • win10 uwp 如何使用DataTemplate 转换绑定Event到Command绑定 ObservableCollectionDataTemplate 绑定 ViewM

    这是数据模板,一般用在数组的绑定,显示数组中的元素。 假如我们有一个列表,列表里是书,包括书名、作者、还有出版,那么我们只有源信息,如何把它显示到我们的ListView,就需要DataTemplate。 使用很简单,我们可以定义在资源,也可以定义在ItemTemplate。 数据模板有绑定的问题。 我们使用Binding和WPF其实没有多少不同,在Mode只有OneWay,OneTime,TwoWay。我们使用的x:bind在DataTemplate才和原来有一些不同。 我们使用x:bind需要我们对我们数据的类型,这个在前没有,我开始不知,弄了好久,最后才知道,还有一个,UWP默认是OneTime,也就是绑定只有一次。

    02

    Android项目重构之路:架构篇

    去年10月底换到了新公司,做移动研发组的负责人,刚开始接手android项目时,发现该项目真的是一团糟。首先是其架构,是按功能模块进行划分的,本来按模块划分也挺好的,可是,他却分得太细,总共分为了17个模块,而好几个模块也就只有两三个类而已。但应用本身其实比较简单,要按功能模块来分的话,最多五个模块就够了。另外,有好多模块划分也很模糊,也有很多类按其功能其实可以属于多个模块的,也有些类定义不明确,做了不该做的事。有时候,我要找一个界面的Activity,按照其功能应该属于A模块的,可是在A模块里却找不到,于是,我只好去AndroidManifest文件里找了,找到才发现原来在B模块里。也有时候,我要找另一个界面的Activity,可我看遍了所有模块,也没看出这个界面应该属于哪个模块,没法子,又只能去AndroidManifest文件里找了,找到才发现竟然在C模块里。代码也是又乱又臭,导致出现一大堆bug又不好找,改好一个bug又出现另一个。整个项目从架构到代码都是又臭又乱,开发人员只是不停地改bug,根本没法做新功能,更别谈扩展了。当时,公司已经有为不同客户定制化app的需求,而现有的架构完全无法满足这样的需求。因此,我决定重构,搭建一个易维护、易扩展、可定制的项目。

    04
    领券