2013-04-13 42 views
1

如何绑定显示ObservableCollection中某个dll函数返回的所有项的ListBox?WPF - 绑定到dll函数

我有在dll singltone类中调用FilesManager和一个函数Instance(),它返回指向这个类的指针。然后我有一个叫GetFiles()的函数,它的返回ObservableCollection包含了所有的文件名。

而且我有一个XML格式的ListBox和我想将它绑定ItemsSource属性
FilesManager.Instance().GetFiles(),我怎么能这样做?

回答

2

您应该考虑使用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。

+0

该属性必须为'DependencyProperty' – nrofis

+0

不,它不会,INotifyPropertyChanged将是从视图模型执行任何UI更新通知的正确方法。你的视图模型不应该是依赖对象。 – devdigital

+0

嗯..?但是'ItemsSource =“{Binding Files}”'只有当'Files'是依赖属性时才起作用... – nrofis