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