【问题标题】:System Windows Forms - binding list of items to List View control系统 Windows 窗体 - 将项目列表绑定到列表视图控件
【发布时间】:2021-05-01 06:42:34
【问题描述】:

我正在尝试在 Excel VSTO 插件上使用带有系统 Windows 窗体界面的 MVVM

我已经创建了我的 API、我的模型和我的视图模型

我已成功测试可以使用 OnPropertyChanged 更新表单上的标签

我现在正在尝试使用视图模型中 List 对象的命名属性填充 CheckedListBox

虽然我的代码没有抛出错误,但它也没有显示所需的输出

这是视图中的代码示例

        projects_label.DataBindings.Add(new Binding("Text", Globals.ThisAddIn.TFSConfigViewModel, "LabelText"));

        projects_list_box.DataBindings.Add(new Binding("Text", Globals.ThisAddIn.TFSConfigViewModel, "ListOfProjectsFromVM.value.name"));

第一个示例运行良好。第二个不显示列表中的文字

我原以为属性会是“标签”,但除了“文本”之外的任何内容都出现错误

这是模型

public class TFS_Project
{
    public string id { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    public string url { get; set; }
    public string state { get; set; }
    public int revision { get; set; }
    public string visibility { get; set; }
}

public class TFS_Projects
{
    public int count { get; set; }
    public List<TFS_Project> value { get; set; }
}

这是来自视图模型

    public Models.TFS_Projects ListOfProjectsFromVM

    {

        get
        {

            return _listOfProjectsFromVM;

        }

        set

        {

            _listOfProjectsFromVM = value;
            OnPropertyChanged(nameof(ListOfProjectsFromVM));

        }

    }

【问题讨论】:

    标签: winforms mvvm data-binding vsto


    【解决方案1】:

    我通过分解绑定命令弄清楚了,这让我更清楚地理解了错误。解决方案是这样的

            projects_list_box.DataSource = Globals.ThisAddIn.TFSConfigViewModel.ListOfProjectsFromVM.value;
            projects_list_box.DisplayMember = "name";
    

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多