2011-05-11 2 views
0

基本的に「小さな画像ビュー」と「詳細ビュー」を切り替えるために、リストパネル内のラッパーパネルをスタックパネル付きのリストボックスに変更します。
これを行うには最良の方法はわかりません。私がこれまで持っているもの:あなたはそのためのListViewを使用する必要がありますWPFスタイルを使用してリストボックスWrapPannelをリストボックスに変更する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を交換する必要があり、すでにGridViewは、詳細ビューで、その後、あなただけ作成する必要がありますサムネイルのビュー。

サブクラスViewBaseをサブクラス化するには、ドキュメントに例があります。シンプルなサムネイルビューを作成することは非常に困難ではありません。

この方法は、表示ロジックを完全にカプセル化するという利点があります。したがって、パネルに加えてItemTemplateのようなプロパティを交換する必要はありません。

+0

私はそれがまだやっていることを理解していないが、それは動作します... – AndyD273

1

また、ItemTemplateSelectorを使用して、マウスオーバーまたはクリックイベントによってトリガされる(イベント)特定の値の変更に基づいてテンプレートを変更することもできます。

このコードはすべてxamlにあり、別のクラスまたはカスタムコントロールを作成する必要はありません。