2013-04-13 3 views
1

일부 DLL에서 함수에 의해 반환되는 ObservableCollection의 모든 항목을 표시하는 ListBox를 바인딩하는 방법은 무엇입니까?WPF - dll 함수에 바인딩

나는이 클래스에 대한 포인터를 반환하는 FilesManagerInstance()이라는 dl singltone 클래스에 있습니다. 그런 다음 GetFiles()이라는 함수가 있고 그 파일 이름이 모두 포함 된 ObservableCollection가 반환됩니다. 내가 그렇게 할 수있는 방법

그리고 XML에서리스트 박스를 가지고 있고 나는 그것을
FilesManager.Instance().GetFiles()-ItemsSource 속성을 바인딩 할?

답변

2

MVVM 디자인 패턴을 사용해보십시오. 이 경우 뷰 모델에 FilesManager.Instance().GetFiles() 컬렉션을 노출하는 속성이 있고 뷰가이 속성에 바인딩됩니다. 당신은 건설 후 Files 참조를 변경하고자한다면

public class MyViewModel 
{ 
    public MyViewModel() 
    { 
     this.Files = FilesManager.Instance().GetFiles(); 
    } 

    public XXX Files { get; private set; } 
} 

<ListBox ItemsSource="{Binding Files}" ... /> 

, 당신은 UI를 업데이트 할 INotifyPropertyChanged을 구현해야합니다.

+0

이 속성은 'DependencyProperty'여야합니다. – nrofis

+0

아니요, 아니요, INotifyPropertyChanged는보기 모델에서 UI 업데이트 알림을 수행하는 올바른 방법 일 것입니다. 뷰 모델은 종속성 객체가 아니어야합니다. – devdigital

+0

음 ...? 하지만'ItemsSource = "{Binding Files}"는'Files'가 종속성 속성 인 경우에만 작동합니다 ... – nrofis