2010-12-15 5 views
0

ObservableCollection에 WPF TreeView를 바인딩했습니다. Connection 노드가 UI에서 확장되면 Connection.GetDatabases()를 호출하여 데이터베이스 모음을 반환합니다.메서드를 사용하여 WPF 트리 바인딩 문제가 발생했습니다.

<HierarchicalDataTemplate DataType="{x:Type dbcore:Connection}" ItemsSource="<WHAT GOES HERE?>"> 
      <StackPanel Orientation="Horizontal"> 
       <Image Source="{StaticResource DataServerIcon}" Margin="5,2" /> 
       <TextBlock Text="{Binding Converter={StaticResource connToStringConverter}}" /> 
      </StackPanel> 
</HierarchicalDataTemplate> 

을하지만 속성 대신하는 방법을 사용하기를 원하기 때문에, 나는 ItemsSource 속성에 사용 모르겠어요 :

나는 HierarchicalDataTemplate을 사용하고 있습니다.

+0

데이터를 반환 할 서비스/메소드를 단순히 호출하는 속성을 사용하지 않는 이유는 무엇입니까? –

+0

@Aaron - 내가 원치 않기 때문에. –

+1

중복 된 http://stackoverflow.com/questions/502250/bind-to-a-method-in-wpf –

답변

2

항목을 확장 할 때 값을 가져 오려면 디자인 타임에 XAML에서 값을 가져올 수 없습니다. 항목이 코드에서 확장되면 다음 작업을 수행 할 수 있습니다.

0

개체를 가져 와서 해당 메서드를 호출하는 IValueConverter을 만들 수 있습니다.

그러나 메소드를 호출하는 원래 객체에 proeprty를 추가하는 것이 훨씬 간단하고 빠를 수도 있습니다.
[Obsolete("Please call MyMethod() instead.", true)]을 추가하여 코드에서 속성 양식이 사용되지 않도록 할 수 있습니다. (이것은 데이터 바인딩을 방해하지 않습니다)

+0

장기 실행 메서드를 호출 할 수있는 속성에 바인딩하지 않아야합니다. – markmnl

+0

@ Mr : 분명히. – SLaks

-1

원하는 메소드/서비스를 통해 데이터를 반환하는 속성을 사용하지 않는 이유는 무엇입니까? 네이티브 메소드에 바인드 할 수 없습니다. 따라서 속성 getter 내에서 메서드에 액세스하거나 IValueConverter 및 호출 할 메서드를 포함 할 수있는 매개 변수를 사용하십시오.

+0

내가 만든 적이없는 클래스에 속성을 추가 할 수 없습니다! –

+2

@Ronnie 자신의 클래스에 데이터를 랩핑합니다. Ala a ViewModel ... 여러분이 만든 클래스를 가지고 있지 않다는 사실은이 멀리까지 양파를 만들지는 않습니다. –

관련 문제