2014-10-31 88 views
0

我有一個綁定的ListView像這樣:變化的GridView ColumnHeaderContainerStyle用綁定查看

<ListView Margin="0,10,8,-10" BorderThickness="2" BorderBrush="AliceBlue" 
        ItemsSource="{Binding PackageBrowser.Documents}" 
        SelectedItem="{Binding SelectedDocument}" 
        View="{Binding PackageBrowser.ColumnConfig, Converter={Converters:ConfigToDynamicGridViewConverter}}">... </ListView> 

這種結合的主要目的是生成動態列。

這裏是我的轉換器:

我的問題是: 如何修改我的GridView的ColumnHeaderContainerStyle所以所有的列不能調整大小。

類似的東西,但在後面的代碼:

<GridView.ColumnHeaderContainerStyle> 
    <Style TargetType="{x:Type GridViewColumnHeader}"> 
     <Setter Property="IsEnabled" Value="False"/> 
    </Style> 
</GridView.ColumnHeaderContainerStyle> 

回答

1

我想,你可能會寫失蹤代碼(ColumnHeaderContainerStyle)。如果您爲ColumnHeaderStyle編寫任何樣式。您必須完成所有功能(如果您想製作不同的設計)。例如:Thumb,ContentPresenter等。我爲您編寫了一個listview樣式代碼。 (對不起,我不知道得很好English.I希望這是你想要的)

這裏是代碼:

<Style x:Key="GridViewColumnHeaderGripper" TargetType="Thumb"> 
    <Setter Property="Width" Value="18"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Thumb}"> 
       <Border Padding="{TemplateBinding Padding}" Background="Transparent"> 
        <Rectangle HorizontalAlignment="Center" Width="1" Fill="#FFD4D4D4"/> 
       </Border> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Style x:Key="{x:Type GridViewColumnHeader}" TargetType="GridViewColumnHeader"> 
    <Setter Property="FontFamily" Value="Tahoma"/>  
    <Setter Property="Foreground" Value="#FF003362"/> 
    <Setter Property="HorizontalContentAlignment" Value="Center"/> 
    <Setter Property="VerticalContentAlignment" Value="Center"/> 
    <Setter Property="Padding" Value="5"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="GridViewColumnHeader"> 
       <Grid> 
        <Border Background="White" BorderBrush="#FFD4D4D4" BorderThickness="1,1,0,1" Name="HeaderBorder" Padding="{TemplateBinding Padding}"> 
         <ContentPresenter Name="HeaderContent" Content="{TemplateBinding Content}" Margin="0,0,0,1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
        </Border> 
        <Thumb x:Name="PART_HeaderGripper" HorizontalAlignment="Right" Margin="0,0,-9,0" Style="{StaticResource GridViewColumnHeaderGripper}"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsPressed" Value="true"> 
         <Setter TargetName="HeaderContent" Property="Margin" Value="1,1,0,0"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="false"> 
         <Setter Property="Opacity" Value=".5" TargetName="HeaderBorder"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="Role" Value="Floating"> 
      <Setter Property="Opacity" Value="0.7" /> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="GridViewColumnHeader"> 
         <Canvas Name="PART_FloatingHeaderCanvas"> 
          <Rectangle Fill="#60000000" Width="{TemplateBinding ActualWidth}" Height="{TemplateBinding ActualHeight}"/> 
         </Canvas> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

感謝MLE的答案,但我在哪裏可以定義ColumnHeaderContainerStyle的風格?我無法訪問我的網格,因爲它是在代碼中生成的... – C1rdec 2014-10-31 15:21:43

+1

您可以將此樣式代碼添加到App.xaml中。 – MLElyakan 2014-10-31 15:36:35

+1

您可以在之間寫入樣式代碼 MLElyakan 2014-10-31 15:38:43