2010-11-12 17 views
8

Je voudrais modifier le modèle pour Microsoft WPF DataGrid (version 4.0), mais je ne suis pas sûr de ce que le modèle existant ressemble. Est-ce que quelqu'un sait ce que c'est ou où je pourrais le trouver?Où puis-je trouver les modèles XAML pour un DataGrid WPF?

+0

http://neilmosafi.blogspot.com/2007/04/new-tool-for-viewing-wpf-default.html – Heinzi

+0

J'ai utilisé pour les autres contrôles, mais il n'a pas le contrôle DataGrid. Je vais vérifier pour une version plus récente si – Rachel

+0

Nope, pas de version mise à jour pour ShowMeTheTemplate – Rachel

Répondre

7

Je vous conseille d'aller dans le mélange (si vous en avez) et extraire le modèle. Sinon, vous pouvez obtenir le code XAML en utilisant XAMLWriter.

Ceci unfortunately named page (je ne pense pas que ce soit vraiment "Kid's Stuff", et vous?) A un exemple de faire ces deux choses.

Si la page ne se passer (2009 est assez loin dans le rétroviseur):

// Get the template from the control 
ControlTemplate template = ctl.Template; 

// We want our xaml of be properly indented, ohterwise 
// we would not be able to indent them. 
XmlWriterSettings xmlSettings = new XmlWriterSettings(); 
xmlSettings.Indent = true; 

// Make the string builder 
StringBuilder sb = new StringBuilder(); 
XmlWriter writer = XmlWriter.Create(sb, xmlSettings); 
XamlWriter.Save(template, writer); 


// Now the sb.ToString() should give us the template 

Tout le crédit à Shafqat Ahmed.

6

Voici ce que je suis sorti de mélange 4:

<ControlTemplate TargetType="{x:Type DataGrid}"> 
       <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True"> 
        <ScrollViewer x:Name="DG_ScrollViewer" Focusable="false"> 
         <ScrollViewer.Template> 
          <ControlTemplate TargetType="{x:Type ScrollViewer}"> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="Auto"/> 
             <ColumnDefinition Width="*"/> 
             <ColumnDefinition Width="Auto"/> 
            </Grid.ColumnDefinitions> 
            <Grid.RowDefinitions> 
             <RowDefinition Height="Auto"/> 
             <RowDefinition Height="*"/> 
             <RowDefinition Height="Auto"/> 
            </Grid.RowDefinitions> 
            <Button Command="{x:Static DataGrid.SelectAllCommand}" Focusable="false" Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}}" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.All}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Width="{Binding CellsPanelHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> 
            <DataGridColumnHeadersPresenter x:Name="PART_ColumnHeadersPresenter" Grid.Column="1" Visibility="{Binding HeadersVisibility, ConverterParameter={x:Static DataGridHeadersVisibility.Column}, Converter={x:Static DataGrid.HeadersVisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> 
            <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" CanContentScroll="{TemplateBinding CanContentScroll}" Grid.ColumnSpan="2" Grid.Row="1"/> 
            <ScrollBar x:Name="PART_VerticalScrollBar" Grid.Column="2" Maximum="{TemplateBinding ScrollableHeight}" Orientation="Vertical" Grid.Row="1" Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportHeight}"/> 
            <Grid Grid.Column="1" Grid.Row="2"> 
             <Grid.ColumnDefinitions> 
              <ColumnDefinition Width="{Binding NonFrozenColumnsViewportHorizontalOffset, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/> 
              <ColumnDefinition Width="*"/> 
             </Grid.ColumnDefinitions> 
             <ScrollBar x:Name="PART_HorizontalScrollBar" Grid.Column="1" Maximum="{TemplateBinding ScrollableWidth}" Orientation="Horizontal" Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Value="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" ViewportSize="{TemplateBinding ViewportWidth}"/> 
            </Grid> 
           </Grid> 
          </ControlTemplate> 
         </ScrollViewer.Template> 
         <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </ScrollViewer> 
       </Border> 
      </ControlTemplate>