2016-01-20 4 views
1

Я хочу создать представление List в WPF (2), которое не меняет промежуток между столбцами и строкой при повторной калибровке, но автоматически изменяет количество столбцов для соответствия.WPF - изменение размера столбца/строки

Что у меня есть:

Что я хочу

Код:

<Window x:Class="WPFApplication.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    Title="Test1" Height="800" Width="1000" Loaded="Window_Loaded" Closing="Window_Closing"> 
<Window.Resources> 
    <DataTemplate x:Key="ItemTemplate"> 
     <WrapPanel> 
      <Grid> 
       <Border BorderThickness="3" BorderBrush="#FF000000" VerticalAlignment="Top"> 
        <Image Width="200" Height="300" Stretch="Fill" DataContext="{DynamicResource Image}" Source="{Binding Image}"/> 
       </Border> 
       <Image HorizontalAlignment="Right" VerticalAlignment="Top" DataContext="{DynamicResource Data}" Source="{Binding Status}" Height="100"/>      
      </Grid> 
     </WrapPanel> 
    </DataTemplate> 
</Window.Resources> 
<Grid x:Name="mainGrid" Margin="0,81,0,0"> 
    <ListView HorizontalContentAlignment="Left" VerticalContentAlignment="Top" Name="View" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding Path = DataList}"> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="Margin" Value="5"/> 
       <Setter Property="HorizontalAlignment" Value="Left"/> 
       <Setter Property="VerticalAlignment" Value="Top"/> 
      </Style> 
     </ListView.ItemContainerStyle> 
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <UniformGrid Columns="3"/> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
    </ListView> 
</Grid> 

+3

Это выглядит как эффект [ 'WrapPanel'] (https://msdn.microsoft.com/en- нас/библиотека/system.windows.controls.wrappanel (v = vs.110) .aspx). Вы пытались назначить его как «ItemsPanelTemplate»? – Sinatr

+0

Если я назначил 'WarpPanel'' ItemsPanelTemplate', он работает, но он показывает только одну строку или столбец, а не оба – Randome

ответ

0

Я нашел решение, я изменил это:

<ItemsPanelTemplate> 
      <UniformGrid Columns="3"/> 
</ItemsPanelTemplate> 

к этому:

<ItemsPanelTemplate>     
       <UniformGrid VerticalAlignment="Top" HorizontalAlignment="Left" Columns="3"/> 
    </ItemsPanelTemplate> 
+0

Появляется ли 4-й столбец при изменении размера? Мне любопытно, потому что вы явно указываете 'Columns = 3'. – Sinatr

Смежные вопросы