【问题标题】:WPF - Binding to dll functionWPF - 绑定到 dll 函数
【发布时间】:2013-04-13 14:08:42
【问题描述】:

如何绑定 ListBox 以显示 ObservableCollection 中由某个 dll 中的函数返回的所有项目?

我有一个名为FilesManager 的dll 单音类和一个函数Instance(),它返回指向该类的指针。然后我有一个名为GetFiles() 的函数,它返回包含所有文件名的ObservableCollection

我在 xml 中有一个 ListBox,我想将它绑定到 ItemsSource 属性到
FilesManager.Instance().GetFiles(),我该怎么做?

【问题讨论】:

    标签: c# wpf data-binding dll


    【解决方案1】:

    您应该考虑使用 MVVM 设计模式。在这种情况下,您的视图模型上将有一个属性公开FilesManager.Instance().GetFiles() 集合,并且您的视图将绑定到此属性。

    public class MyViewModel
    {
        public MyViewModel()
        {
            this.Files = FilesManager.Instance().GetFiles();
        }
    
        public XXX Files { get; private set; }
    }
    
    <ListBox ItemsSource="{Binding Files}" ... />
    

    如果您想在构造后更改 Files 引用,则需要实现 INotifyPropertyChanged 以更新 UI。

    【讨论】:

    • 属性必须为DependencyProperty
    • 不,它没有,INotifyPropertyChanged 将是从视图模型执行任何 UI 更新通知的正确方法。你的视图模型不应该是依赖对象。
    • 嗯..?但是 ItemsSource="{Binding Files}" 只有在 Files 是依赖属性时才有效...
    • 不,这仅适用于绑定目标 - 在本例中是 ListBox 的 ItemsSource 属性。
    • window.cs文件中定义的属性对吧?如果我在 XAML 中编写 ItemsSource="{Binding Files}",如果 Files 不是依赖属性(propdp 片段),则绑定不起作用...
    猜你喜欢
    • 2017-02-26
    • 2012-01-09
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多