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?
Répondre
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.
Voici comment faire programme:
http://www.interact-sw.co.uk/iangblog/2007/02/14/wpfdefaulttemplate
il y a deux grandes listes de modèles/styles sur msdn J'utilise souvent:
http://msdn.microsoft.com/fr-fr/library/aa970773.aspx
http://msdn.microsoft.com/en-us/library/aa970773.aspx
malheureusement, ils ne sont pas aussi annoncé qu'ils devraient être ...
donc en ce qui vous concerne, je recommande ceci (obtenu à partir du deuxième lien): http://msdn.microsoft.com/en-us/library/ff506248.aspx
m'a énormément aidé récemment!
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>
http://neilmosafi.blogspot.com/2007/04/new-tool-for-viewing-wpf-default.html – Heinzi
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
Nope, pas de version mise à jour pour ShowMeTheTemplate – Rachel