2017-08-01 44 views
2

我試圖創建一個具有全功能標題的列表,但我似乎只能獲得具有功能標題的列表以及所有列表視圖項目減少爲文本塊。或者是一個列表視圖,其中所有按鈕和文字都是完全樣式的,但沒有正確鏈接標題。看到下面的圖片;WPF GridViewRowPresenter將所有內容轉換爲文本塊

enter image description here

我的ListView定義是這樣對他們倆的:

   <ListView ItemsSource="{Binding ScenarioComponents}" Style="{StaticResource ListViewWithHeader}" ItemContainerStyle="{StaticResource ListViewWithHeaderItem}"> 
        <ListView.View> 
         <GridView> 
          <GridViewColumn Width="Auto" Header="{Binding NameHeader}" DisplayMemberBinding="{Binding Name}"/> 
          <GridViewColumn Width="Auto" Header="{Binding TypeHeader}" DisplayMemberBinding="{Binding Type}"/> 
          <GridViewColumn Width="Auto" Header="{Binding InfoHeader}"/> 
          <GridViewColumn Width="Auto" Header="{Binding ExportHeader}"/> 
          <GridViewColumn Width="Auto" Header="{Binding DeleteHeader}"/> 
         </GridView> 
        </ListView.View> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="5*"/> 
            <ColumnDefinition Width="1.5*"/> 
            <ColumnDefinition Width="0.5*"/> 
            <ColumnDefinition Width="0.5*"/> 
            <ColumnDefinition Width="0.5*"/> 
           </Grid.ColumnDefinitions> 
           <Label Grid.Column="0" Content="{Binding Name}" HorizontalAlignment="Left"/> 
           <Label Grid.Column="1" Content="{Binding Type}" Background="{StaticResource XVROrange}"/> 
           <Button Grid.Column="2" Style="{StaticResource BorderLessButton}" Command="{Binding MoreInfoCommand}"> 
            <Button.Content> 
             <Image Source="/Views/Images/cc2_gui_information_default.png"/> 
            </Button.Content> 
           </Button> 
           <Button Grid.Column="3" Style="{StaticResource BorderLessButton}" Command="{Binding ExportCommand}"> 
            <Button.Content> 
             <Image Source="/Views/Images/cc2_gui_export_default.png"/> 
            </Button.Content> 
           </Button> 
           <Button Grid.Column="4" Style="{StaticResource BorderLessButton}" Command="{Binding DeleteCommand}"> 
            <Button.Content> 
             <Image Source="/Views/Images/cc2_gui_b_delete.png"/> 
            </Button.Content> 
           </Button> 
          </Grid> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 

而且在造型,唯一的區別是,一個有工作的頭採用了GridViewRowPresenter在ListViewItem這樣:

 <Style x:Key="ListViewWithHeaderItem" TargetType="ListViewItem"> 
     <Setter Property="OverridesDefaultStyle" Value="true" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border x:Name="Border" Padding="0" Background="Transparent" BorderBrush="{StaticResource XVR70}" BorderThickness="1"> 
         <GridViewRowPresenter Content="{TemplateBinding Content}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

而第二個只使用ContentPresenter而不是GridViewRow使用相同的樣式演講者沒有任何裝飾。

  <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border Background="Transparent" BorderBrush="{StaticResource Black47}" BorderThickness="0,0,0,0"> 
         <ContentPresenter /> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 

對於使用GridViewRowPresenter某種原因,意味着我ListView.ItemTemplate的DataTemplate中gets turned into a Textblock每一個項目。我無法弄清楚爲什麼。我真的希望繼續使用GridViewRowPresenter,因爲這意味着頭文件被綁定到列表中的項目並且與它們和所有內容一起縮放。

有沒有人有任何想法我可以這樣做的風格工作?

+0

由於你的列是固定的,你可以使用'GridViewColumn.CellTemplate',對吧? –

回答

0

你可以把模板從ItemTemplate放到GridViewColumns中嗎?

<ListView.View> 
    <GridView> 
    <GridView.Columns> 
     <GridViewColumn Width="Auto" Header="{Binding NameHeader}" DisplayMemberBinding="{Binding Name}"> 
     <GridViewColumn.CellTemplate> 
      <DataTemplate> 
      <Label Grid.Column="0" Content="{Binding Name}" HorizontalAlignment="Left"/> 
      </DataTemplate> 
     </GridViewColumn.CellTemplate> 
     </GridViewColumn> 
     <!-- more columns --> 
    </GridView.Columns> 
    </GridView> 
</ListView.View> 
+0

這解決了我的問題,但前兩列只有在我刪除了'DisplayMemberBinding =「{Binding Type}」'屬性後。 – Stephanie