2010-05-06 5 views
3

내가 설정 한 이런 내 DataContext :WPF 바인딩 경로 =/작동하지 않습니까?

DownloadManagerEnumerable<DownloadItem>입니다
<Window.DataContext> 
    <c:DownloadManager /> 
</Window.DataContext> 

. 그것은 바로 모든 DownloadItems를 나열되어서 너무

<DataGrid Name="dataGrid1" ItemsSource="{Binding Path=/}" ... 

: 그럼 난 이런 내 DataGrid을 설정? UriDownloadItem의 속성이다

<DataGridTextColumn Binding="{Binding Path=Uri, Mode=OneWay}" 

: 그래서처럼 내 열을 설정할 수 있어야합니다. 그러나 그것은 이것을 좋아하지 않는 것처럼 보입니다. 시각적 속성 편집기에서 Uri이 유효한 속성인지 인식하지 못하므로 내가 잘못 생각한 것 같습니다.

Values에 바인딩 된 데이터 그리드가있을 때 이전에 작동했지만 그 다음 해당 열거 형을 DownloadManager에서 가져 와서 자체적으로 열거했습니다. 이 문제를 어떻게 해결할 수 있습니까?

추신 : "작동하지 않음"은 항목을 나열하지 않음을 의미합니다. DM의 생성자에 일부를 추가 했으므로 비어 있어서는 안됩니다.

+1

는'경로 = /는'은'라는 DownloadManager''/'의 속성을 찾습니다. (만약 그것이'XmlDataSource'라면'XPath = /'를 사용할 수 있었지만, 그것은 완전히 다른 이야기입니다 ...) –

+0

@ Dan : 아 .. 저는 방금 속성 편집기에서 "Current Item"을 선택했습니다. 줬어. – mpen

+0

@Dan - Path = /는 DataContext의 현재 항목에 바인딩합니다 ( DataContext가 컬렉션 인 경우). 다음은 바인딩 경로를 참조 할 때 자주 사용하는 유용한 리소스입니다. http://www.nbdtech.com/Blog/archive/2009/02/02/wpf-xaml-data-binding-cheat-sheet.aspx –

답변

7

시도 ItemsSource="{Binding}". 그것은 충분해야합니다.

+0

똑똑! 매력처럼 일했습니다. – mpen

+1

또는'ItemsSource = "{바인딩 경로 =.}"'. 둘 다 똑같은 일을합니다. – Amsakanna

-1

Danko의 답변에 대한 대안으로 정적 자원을 발견했습니다! (I는 WPF 멍청한 놈이야) 작품 {바인딩}하지만 작동하지 않습니다 {= /이 경로를 바인딩}, 나는에 대한 답변으로 다음과 같은 정보를 추가 해요 이유의 OP의 질문에 대한 응답으로

<Window x:Class="ImageGetGUI.MainWindow" 
    ... 
    <Window.Resources> 
     <c:DownloadManager x:Key="dm"/> 
    </Window.Resources> 
    ... 
    <DataGrid Name="dataGrid1" ItemsSource="{StaticResource dm}" ... 
+0

또한 Window.DataContext에 ' 이름을 지정할 수도 있습니다. 이렇게하면 이름으로 DataContext에 액세스 할 수 있습니다. 필요한 경우 코드 숨김. ObjectDataProvider를 살펴볼 수도 있습니다. 응용 프로그램의 리소스 사전에 배치했을 때 매우 유용하다는 것을 알았습니다. 예를 들어, 여러보기에서 다시 사용되는 모음이있는 경우, 즉 'List '입니다. –

5

그 차이를 분명히해라.

다음

MSDN Data Binding Overview > Binding to Collections에서 가져온 것입니다 :

현재 항목 포인터

보기도 현재 항목의 개념을 지원합니다. 모음보기에서 개체를 탐색 할 수 있습니다. 을 탐색 할 때 포인터를 이동하여 에있는 개체를 컬렉션의 특정 위치에서 검색 할 수 있습니다. 예를 들어 How to: Navigate Through the Objects in a Data CollectionView을 참조하십시오. WPF는보기 (뷰는 사용자가 지정, 또는 컬렉션의 기본 보기 중 하나)를 사용하여 수집에만 에 결합하기 때문에

, 컬렉션 모든 바인딩은 현재 항목 포인터를 가지고있다. 보기에 바인딩 할 때 경로 값의 슬래시 ("/") 문자는 의 현재보기 항목을 지정합니다. 다음 예에서 데이터 컨텍스트는 컬렉션보기입니다. 첫 번째 줄 은 컬렉션에 바인딩됩니다. 두 번째 줄은 컬렉션의 현재 항목에 바인딩됩니다. 세 번째 줄은 컬렉션의 현재 항목 의 Description 속성에 바인딩됩니다.그것은 결코 잘 될 것없는 것 -

<Button Content="{Binding }" /> 
<Button Content="{Binding Path=/}" /> 
<Button Content="{Binding Path=/Description}" /> 
+0

오오 ..... 좋아. 이제 알겠다. 현재 항목! = DataContext. 이것은 DataContext의 첫 번째 항목입니다. – mpen

관련 문제