2010-02-05 7 views
1

제 문제는 다소 간단합니다.
나는 WPF ListBox 데이터 바인딩 및 이벤트

<ListBox Name="ListBox_Thumbnails" ItemsSource="{Binding}" DataContext="{Binding Source= {StaticResource ThumbnailListSource}}" Width="120" HorizontalAlignment="Left" Margin="-1,26,0,54"> 
<ListBox.ItemTemplate> 
    <DataTemplate> 
     <StackPanel> 
      <Image Source="{Binding Path=absolutePath}" MouseLeftButtonDown=<!--?????-->/> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

나는 이미지를 보여주고 싶었다, 그러나 새로운 유래 사용자로, 나는 할 수 없습니다 Thumnails (이미지)을 포함하는 목록 상자가 있습니다.

http://www.freeimagehosting.net/uploads/61aa983cad.jpg

이 (저를 신뢰하지 않는 사람들을 위해, 나는 이미지의 내용을 여기에 설명

: 당신은 여기에 이미지를 찾을 수 있습니다 왼쪽의 를 썸네일 목록 (수직으로 표시)이 있습니다 오른쪽에는 더 큰 이미지가 있으며, 기본적으로 첫 번째 축소판 이미지가 커집니다.

왼쪽의 축소판을 클릭하면 오른쪽의 큰 이미지가 내가 클릭 한 이미지로 업데이트되어야합니다.

저는 WPF를 처음 접했을 때 저의 접근 방식이 아마도 ListBox에 완전히 잘못되었습니다. 제발, WPF 전문가, 나에게 빛을 보여줘!

+0

그가 링크 된 이미지 (http://www.freeimagehosting.net/를 uploads/61aa983cad.jpg)는 완전히 SFW입니다. –

답변

4

ListBox에서 SelectionChanged와 같은 이벤트를 사용할 수 있습니다.하지만 그건 완전히 TRUE WPF-Jedi 방식이 아닙니다. 코드 숨김이 어두운면입니다! =)

데이터 바인딩을 생각해 봅시다. 큰 이미지 요소의 소스를 SelectedItem 속성 인 ListBox에 바인딩합니다. 모양은 다음과 같습니다.

<Image Source="{Binding SelectedItem.absolutePath, ElementName=ListBox_Thumbnails}"> 

P.S. 모든 WPF-databinding-jedi는 this cheat sheet 근처에 있어야합니다.

P.P.S. 사실, 이것은 작동하지 않을 수도있는 ItemTemplate을 사용함에 따라 StackPanel을 선택한 항목으로 가질 수 있습니다.이 경우 the SelectedValuePath trick을 "absolutePath"로 설정하고 큰 이미지를 SelectedValue 속성에 바인딩 할 수 있습니다.

<ListBox Name="ListBox_Thumbnails" ItemsSource="{Binding}" DataContext="{Binding Source= {StaticResource ThumbnailListSource}}" Width="120" HorizontalAlignment="Left" Margin="-1,26,0,54" SelectedValuePath="absolutePath"> 

그리고 당신의 큰 이미지 태그가된다 :

그래서 귀하의 목록 상자 여는 태그가된다 보조 노트로

<Image Source="{Binding SelectedValue, ElementName=ListBox_Thumbnails}"> 
+0

WPF Yoda Master (일명 Yacoder)에 감사드립니다. 나는 당신의 "P.P.S"를 시도 할 것입니다. 불행히도 충분한 "담당자"가 없으므로 지금 귀하의 답변에 투표 할 수 없습니다. 나는 나중에 그것을 할 것이다. 약속! – user266928

+0

나는 꽤 이해하지 못한다. 코드를 제공 할 수 있다면 좋을 것입니다! 고맙습니다! – user266928

+0

@tokyorockstar : 코드 샘플 = 추가) –