2012-05-24 116 views
4

我正在使用一个ListView,它被分组在数据源的某个属性(资源)上。我的要求是,以显示与其他群体,但我实现的(如下),水平排列的各组将显示出组对齐veritcally水平排列ListView项目

  <ListView x:Name="listViewResourceHours" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="0" SelectionMode="Single" Height="100" Width="300" > 
      <ListView.GroupStyle> 
       <GroupStyle> 
        <GroupStyle.ContainerStyle> 
         <Style TargetType="{x:Type GroupItem}"> 
          <Setter Property="Template"> 
           <Setter.Value> 
           <ControlTemplate TargetType="GroupItem"> 
            <StackPanel Orientation="Horizontal"> 
             <ContentPresenter/> 
             <ItemsPresenter/> 
            </StackPanel> 
           </ControlTemplate> 
          </Setter.Value> 
          </Setter> 
         </Style> 
        </GroupStyle.ContainerStyle> 
       </GroupStyle> 
      </ListView.GroupStyle> 
      <ListView.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
       </ItemsPanelTemplate> 
      </ListView.ItemsPanel> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" > 
         <Label VerticalAlignment="Center" Margin="0" Content="{Binding Hours}" /> 
         <Label VerticalAlignment="Center" Margin="2,0,0,0" Content="{Binding WorkingHoursType, Converter={StaticResource ResourceKey=hoursTypeConverter}}" /> 
        </StackPanel> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

下面是这段代码的结果的示例:

PSE: 0 (B) 0 (NB) 
PSC: 0 (B) 0 (NB) 
PM: 0 (B) 0 (NB) 
EIA: 0 (B) 0 (NB) 

这里我真正想要它看起来像样本

PSE: 0 (B) 0 (NB) PSC: 0 (B) 0 (NB) PM: 0 (B) 0 (NB) EIA: 0 (B) 0 (NB) 

任何帮助表示赞赏。

+0

其他人可能会发现[此链接](http://stackoverflow.com/questions/359217/how-do-i-make-wpf-listview-items-repeat-horpont-like-a-horizo​​ntal-scrollba )也有帮助。 – mwjohnson

回答

1

这是继gaurawerma

后的最终代码
<ListView x:Name="listViewResourceHours" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="0" SelectionMode="Single" Height="100" Width="500" > 
     <ListView.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.Panel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation="Horizontal" /> 
        </ItemsPanelTemplate> 
       </GroupStyle.Panel> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <TextBlock FontWeight="Bold" Text="{Binding Name, StringFormat={}{0}:}" /> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
       <GroupStyle.ContainerStyle> 
        <Style TargetType="{x:Type GroupItem}"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="GroupItem"> 
            <StackPanel Orientation="Horizontal"> 
             <ContentPresenter Margin="0,0,0,0" VerticalAlignment="Center" /> 
             <ItemsPresenter Margin="0,0,0,0" VerticalAlignment="Center"/> 
            </StackPanel> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 
        </Style> 
       </GroupStyle.ContainerStyle> 
      </GroupStyle> 
     </ListView.GroupStyle> 
     <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
      </ItemsPanelTemplate> 
     </ListView.ItemsPanel> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" > 
        <Label VerticalAlignment="Center" Margin="0" Content="{Binding Hours}" /> 
        <Label Name="lblWorkingHours" VerticalAlignment="Center" Margin="0,0,0,0" Content="{Binding WorkingHoursType, Converter={StaticResource ResourceKey=hoursTypeConverter}}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 

    </ListView> 
7

在这种情况下,你应该定义为集团的面板以及类似:

<GroupStyle.Panel> 
    <ItemsPanelTemplate> 
     <StackPanel Orientation="Horizontal" /> 
    </ItemsPanelTemplate> 
</GroupStyle.Panel> 

您的XAML看起来国防部后,如:

<ListView x:Name="listViewResourceHours" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="0" SelectionMode="Single" Height="100" Width="300" > 
    <ListView.GroupStyle> 
     <GroupStyle> 
      <GroupStyle.Panel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal" /> 
       </ItemsPanelTemplate> 
      </GroupStyle.Panel> 
      <GroupStyle.ContainerStyle> 
       <Style TargetType="{x:Type GroupItem}"> 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="GroupItem"> 
           <StackPanel Orientation="Horizontal"> 
            <ContentPresenter/> 
            <ItemsPresenter/> 
           </StackPanel> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style> 
      </GroupStyle.ContainerStyle> 
     </GroupStyle> 
    </ListView.GroupStyle> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" > 
       <Label VerticalAlignment="Center" Margin="0" Content="{Binding Hours}" /> 
       <Label VerticalAlignment="Center" Margin="2,0,0,0" Content="{Binding WorkingHoursType}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

谢谢gaurawerma!它为我工作。 –

2

正确的做法是:

<ListView Grid.Row="4" Name="btView"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"></StackPanel> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <RadioButton Name="Octave1" Content="Octave 1"/> 
       <RadioButton Name="Octave2" Content="Octave 2"/> 
       <RadioButton Name="Octave3" Content="Octave 3"/> 
       <RadioButton Name="Octave4" Content="Octave 4"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 

    <ListItem/> 
</ListView>