2012-10-18 3 views
1

저는 새롭고 이번에는 도움이되지 않습니다. 몇 가지 예제를 수행하고 DataGrid를 채우고 데이터베이스를 수정할 수 있었지만 ListView에서 문제가 발생했습니다.바인딩을 사용하여 DataTable에 목록 상자 바인딩하기

public class GlobalDataviews : INotifyPropertyChanged 
{ 
    ... 

    //Billable data table 
    //Populated elsewhere with "SELECT ID, Value FROM BillableTable;" 
    private DataTable mBillable; 
    public DataView Billable() 
    { 
     return mBillable.DefaultView; 
    } 
} 

가 여기 내 XAML 조각입니다 : 내 ListView에 대한

<Window.Resources> 
    <ObjectDataProvider x:Key="GlobalDataviews" ObjectType="{x:Type local:GlobalDataviews}" /> 
    <ObjectDataProvider x:Key="BillableData" ObjectInstance="{StaticResource GlobalDataviews}" MethodName="Billable" /> 
</Window.Resources> 

그리고 지금 : 나는 아마 매우 간단 뭔가를 누락

<ListBox Name="listBox1" DataContext="{StaticResource BillableData}" SelectedValuePath="ID" DisplayMemberPath="Value"/> 

여기 내 클래스입니다. 올바른 방법은 무엇입니까? 선택한 값 (다중 선택 없음)을 내 코드의 다른 속성에 바인딩하고 싶습니다. 누구든지 도와 줄 수 있습니까? 내가 왜 그렇게 혼란스러워하는지 잘 모르겠다.

답변

2

DataContext를 설정하는 경우 ItemsSource 속성을 설정하여 데이터를 바인딩해야합니다.

<ListBox x:Name="listBox1" ItemsSource="{Binding Source={StaticResource BusinessData}}" SelectedValuePath="ID" DisplayMemberPath="Value" /> 
+0

두 방법 모두 작동합니다. 감사! – dmaruca

+0

그것이 내가 의미했던 것입니다. 어쨌든 ItemsSource를 설정해야합니다. DataContext를 설정했다면 ItemsSource를 {Binding}으로 설정하여 데이터 바인딩이 이루어 지도록해야합니다. 그렇지 않으면 ItemsSource에 소스를 지정해야합니다. –

1

ItemsSource에 대한 바인딩이 누락되었습니다. 이 같은

뭔가 :

myCollection
<ListBox Name="listBox1" DataContext="{StaticResource BusinessData}" ItemsSource="{Binding myCollection}" SelectedValuePath="ID" DisplayMemberPath="Value"/> 

는 목록을 노출하는 속성입니다.

+0

당신은 내가 DataTable의에서 직접 목록을 채울 수 없음을 말해하려고 다음과 같이

<ListBox x:Name="listBox1" DataContext="{StaticResource BusinessData}" ItemsSource="{Binding}" SelectedValuePath="ID" DisplayMemberPath="Value" /> 

그렇지 않으면, 당신은 직접 ItemsSource 바인딩 할 수 있습니다? 나는 컬렉션을 만들어야 만합니까? 그렇다면 왜 SelectedValuePath = "ID"DisplayMemberPath = "Value"를 지정해야합니까? – dmaruca

+0

@dmaruca : 아니요. DataTable에 직접 바인딩 할 수 있어야하며, DataTable은 컬렉션 유형입니다. 바인딩 할 속성이 필요합니다. 'BusinessData'가 있어야 할 것이 무엇인지 게시 한 내용이 명확하지 않습니다. 실제로 테이블이라면 이미 데이터 컨텍스트이므로'ItemsSource = {Binding} '을 사용할 수 있어야합니다. –

+0

BusinessData에 혼란을 가져 주어서 죄송합니다. 나는 틀린 것을 붙여 넣었다. 그리고 나는 되돌아 가게되고, 정확한 이름을 보여주기 위해 편집하기 전에 당신은 대답했다. – dmaruca

관련 문제