2011-05-11 2 views
0

기본적으로 "작은 이미지보기"와 "세부 사항보기"사이를 전환하려면 stackpanel이있는 listw에 내부의 wrappanel을 사용하여 목록보기를 변경하고 싶습니다.
가장 좋은 방법은 아닙니다. 내가 지금까지 가지고 :WPF 스타일을 사용하여 ListBox WrapPannel을 ListBox로 변경 StackPanel

<UserControl.Resources> 
    <Style x:Key="ListBoxWrap" TargetType="ListBox"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <WrapPanel /> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
    <Style x:Key="ListBoxList" TargetType="ListBox"> 
     <Setter Property="ItemsPanel"> 
      <Setter.Value> 
       <ItemsPanelTemplate> 
        <StackPanel /> 
       </ItemsPanelTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</UserControl.Resources> 
     <ListBox Style="{StaticResource ListBoxList}" Name="lstContacts" Background="White" Margin="7,0,7,7" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Border CornerRadius="4" Margin="5"> 
         <StackPanel> 
          <TextBlock Text="{Binding FullName}" Margin="5,3,5,0" /> 
          <TextBlock Text="{Binding Title}" Margin="5,0,5,3" /> 
         </StackPanel> 
        </Border> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <WrapPanel /> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
     </ListBox> 

답변

1

당신은 다음 방금 모양을 변경할 수 ListView.View을 교환 할 필요가에 대한 ListView를 사용해야하는 것은의 GridView 이미 당신 만 작성해야하는 사항-이다 축소판 그림보기.

하위 클래스 ViewBase을 수행하려면 설명서에 예제가 있습니다. 간단한 썸네일보기를 만드는 것은 그렇게 어렵지 않아야합니다.

이 접근법은 디스플레이 로직을 완전히 캡슐화하므로 패널 외에도 ItemTemplate과 같은 속성을 스왑 아웃하지 않아도된다는 이점이 있습니다.

+0

아직 어떤 일을하는지 이해하지 못 하겠지만 작동합니다 ... – AndyD273

1

또한 ItemTemplateSelector를 사용하여 마우스 오버 또는 클릭 이벤트에 의해 트리거 될 수있는 (이벤트) 특정 값 변경을 기반으로 템플릿을 수정할 수 있습니다.

이 코드는 모두 xaml에 있으며 사용자는 별도의 클래스 또는 사용자 정의 컨트롤을 만들 필요가 없습니다.