2010-11-12 43 views
8

我想修改Microsoft WPF DataGrid(4.0版本)的模板,但我不确定现有的模板是什么样子。有谁知道它是什么或在哪里可以找到它?我在哪里可以找到WPF DataGrid的XAML模板?

+0

http://neilmosafi.blogspot.com/2007/04/new-tool-for-viewing-wpf-default.html – Heinzi 2010-11-12 14:56:13

+0

我有用于其他控件,但它没有DataGrid控件。我会检查更新版本 – Rachel 2010-11-12 14:59:22

+0

不可以,ShowMeTheTemplate没有更新的版本 – Rachel 2010-11-12 15:14:48

回答

7

我会建议进入混合(如果有的话),并提取模板。否则,您可以使用XAMLWriter获取XAML。

unfortunately named page(我不认为这真的是“孩子的东西”,是吗?)有一个这样做的例子。

如果页面确实发生走开(2009年在后视镜很远):

// 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 

所有信贷沙夫卡特·艾哈迈德。

6

这是我离开了混合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> 
相关问题