2012-12-19 6 views
1

Acutally 사용자가 패널에서 Image을 선택할 수있는 WPF 응용 프로그램을 만들고 있습니다. 패널 안에는 두 개의 Button이 있습니다 (오른쪽 화살표와 왼쪽 화살표). 나는 패널의 이름이 무엇인지 모르겠지만 내 질문에 이미지를 첨부합니다. 그래서 패널을 어떻게 만들지 묻고 싶습니다. 캔버스를 사용하여 캔버스 내부에 이미지를 넣으시겠습니까? 흠 ... 그리고 버튼, 나는 그것을하는 방법을 전혀 이상하지 않습니다.이미지 선택 캔버스

P/S :

enter image description here

답변

1

여기 표준 ListBox 컨트롤을 사용하여, 그것을 할 한 가지 방법입니다 :

첫째, 우리는 다음/이전 버튼과리스트 박스의 한 쌍을 필요로한다. 우리는 목록 상자가 ItemsPanel을 변경하여 수평으로 해당 항목을 배치 할 : 우리는 Template를 검색하고 찾을 VisualTreeHelper를 사용하여 목록 상자에서

<DockPanel Width="200" > 
    <Button x:Name="_prev" Content="&lt;&lt;" /> 
    <Button x:Name="_next" Content="&gt;&gt;" DockPanel.Dock="Right" /> 

    <ListBox x:Name="_myList" Loaded="OnMyListLoaded" > 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <VirtualizingStackPanel Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 

     <TextBlock Text="Image1 " /> 
     <TextBlock Text="Image2 " /> 
     <TextBlock Text="Image3 " /> 
     <TextBlock Text="Image4 " /> 
     <TextBlock Text="Image5 " /> 
     <TextBlock Text="Image6 " /> 
     <TextBlock Text="Image7 " /> 
    </ListBox> 
</DockPanel> 

'로드 이벤트를 자사의 내장에서 ScrollViewer. 일단 우리가 찾으면 우리가 만든 두 개의 버튼에 연결합니다.

private void OnMyListLoaded(object sender, RoutedEventArgs e) 
{ 
    var scroller = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(_myList, 0), 0) as ScrollViewer; 
    if (scroller != null) 
    { 
     _prev.Command = ScrollBar.LineLeftCommand; 
     _prev.CommandTarget = scroller; 

     _next.Command = ScrollBar.LineRightCommand; 
     _next.CommandTarget = scroller; 

     scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden; 
    } 
} 
+0

"ScrollBar"라는 이름이 있습니다. 현재 컨텍스트에 존재하지 않습니다 ... 내가 참조를 가져올 필요가 있습니까? – 0070

+0

@ 0070 - 새로운 참조는 필요 없지만 코드 파일의 맨 위에있는 다른 using 문과 함께 다른 "using"문이 필요합니다. ** using System.Windows.Controls.Primitives; ** – Sphinxxx

0

이 당신을 도울 수 있습니다 :

<Grid> 
    <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="Auto"/> 
    </Grid.ColumnDefinitions> 

    <Button Name="LeftB" Grid.Column="0" /> 
    <Button Name="RightB" Grid.Column="2" /> 
    <StackPanel Orientation="Horizontal" Name="Images" Grid.Column="1" /> 
</Grid> 

이미지는 StackPanel의의 어린이 수 있습니다 내가 WPF 초보자에게

이미지입니다.
물론 이미지의 크기를 숫자와 StackPanel의 폭의 함수로 설정해야합니다. 가장 좋은 방법은 StackPanel의 Width change 이벤트를 처리하는 것입니다.