You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET MAUI中以最简方式将ListView的ItemSource绑定到代码隐藏类的ObservableCollection?

.NET MAUI中ListView与ObservableCollection的最简数据绑定方案

以下几种方案都是简洁优雅的实现方式,其中第一种和你习惯的Web开发绑定体验最为接近:

1. 编译时绑定(x:Bind)—— 最简洁直观

直接用x:Bind绑定到代码隐藏类的属性,无需额外设置BindingContext,和Angular的绑定逻辑一致:

XAML代码

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourNamespace.YourPage"
             Title="Your Page">

  <ListView ItemsSource="{x:Bind observableCollection}">
      <!-- 可添加ItemTemplate定义列表项布局 -->
  </ListView>

</ContentPage>

代码隐藏

public partial class YourPage : ContentPage
{
    public ObservableCollection<YourItemType> observableCollection { get; } = new();

    public YourPage()
    {
        InitializeComponent();
        // 在这里初始化集合数据即可
    }
}

x:Bind默认绑定到页面自身的代码隐藏类,不仅语法简洁,还支持编译时检查,能提前发现绑定错误,比传统{Binding}更高效。

2. 纯XAML传统绑定

这是你已经发现的无代码隐藏操作的方案,适合习惯WPF/Xamarin传统绑定的场景:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="YourNamespace.YourPage"
             x:Name="page"
             Title="Your Page">

  <ListView BindingContext="{x:Reference page}" ItemsSource="{Binding observableCollection}">
  </ListView>

</ContentPage>

代码隐藏部分和上面一致,无需额外操作。

3. 全局设置BindingContext

如果不想在XAML里写x:Reference,可以在构造函数中给整个页面设置BindingContext,后续所有子控件都能直接绑定页面属性:

XAML代码

<ListView ItemsSource="{Binding observableCollection}"></ListView>

代码隐藏

public partial class YourPage : ContentPage
{
    public ObservableCollection<YourItemType> observableCollection { get; } = new();

    public YourPage()
    {
        InitializeComponent();
        BindingContext = this; // 全局设置,所有子控件默认继承
    }
}

内容的提问来源于stack exchange,提问作者fonzane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:02:59