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

WPF MVVM模式下ListBox不显示数据问题求助

WPF MVVM ListBox无数据加载问题修复

核心问题分析

  1. ViewModel实例重复创建:MainWindow构造函数中先初始化了一个带数据的ViewModel,但随后又新建了一个空实例赋值给DataContext,导致ListBox绑定的是空集合。
  2. SelectedItem类型错误:ViewModel中SelectedItem定义为ObservableCollection<string>,但ListBox的SelectedItem对应单个选中项,应改为string类型。
  3. 绑定模式冗余:ItemsSource使用TwoWay模式无意义,集合绑定默认OneWay即可。

修正后的代码

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        var model = new Listboxviewmodel();
        model.Items.Add("orange");
        model.Items.Add("apple");
        model.Items.Add("grapes");
        this.DataContext = model;
    }
}

Listboxviewmodel.cs

namespace WpfApp2
{
    public class Listboxviewmodel : INotifyPropertyChanged
    {
        private ObservableCollection<string> _items = new ObservableCollection<string>();
        private string _selectedItem;

        public ObservableCollection<string> Items
        {
            get => _items;
            set
            {
                _items = value;
                SetPropertyChanged(nameof(Items));
            }
        }

        public string SelectedItem
        {
            get => _selectedItem;
            set
            {
                _selectedItem = value;
                SetPropertyChanged(nameof(SelectedItem));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        public void SetPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

MainWindow.xaml(优化绑定模式)

<Window.DataContext>
    <local:Listboxviewmodel/>
</Window.DataContext>

<Grid>
    <ListBox Width="100" Height="100" 
             ItemsSource="{Binding Items, Mode=OneWay}" 
             SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
    </ListBox>
</Grid>
</Window>

说明

  • 确保ViewModel实例唯一,数据添加到绑定的实例中
  • SelectedItem类型匹配单个字符串项,保证选中功能正常
  • 优化绑定模式减少不必要的资源消耗

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:52:48