2010-11-12 27 views
8

Tôi muốn sửa đổi mẫu cho Microsoft WPF DataGrid (phiên bản 4.0) nhưng tôi không chắc chắn mẫu hiện có trông như thế nào. Có ai biết nó là gì hay tôi có thể tìm thấy nó ở đâu?Tôi có thể tìm các mẫu XAML cho một DataGrid WPF ở đâu?

+0

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

+0

Tôi có được sử dụng cho các điều khiển khác nhưng nó không có điều khiển DataGrid. Tôi sẽ kiểm tra phiên bản mới hơn mặc dù – Rachel

+0

Không, không có phiên bản cập nhật cho ShowMeTheTemplate – Rachel

Trả lời

7

tôi sẽ khuyên bạn nên đi vào Blend (nếu bạn có nó) và chiết xuất Mẫu. Nếu không, bạn có thể lấy XAML bằng XAMLWriter.

Đây là một ví dụ về việc thực hiện cả hai điều này.

Trong trường hợp trang đó xảy ra ra đi (năm 2009 là khá xa trong gương chiếu hậu):

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

Tất cả tín dụng cho Shafqat Ahmed.

4

có hai danh sách lớn các mẫu/phong cách trên MSDN Tôi thường sử dụng:

http://msdn.microsoft.com/fr-fr/library/aa970773.aspx

http://msdn.microsoft.com/en-us/library/aa970773.aspx

buồn thay, họ không phải là quảng cáo như họ nên được ...

cho đến khi bạn quan tâm, tôi khuyên bạn nên sử dụng (đã nhận từ liên kết thứ hai): http://msdn.microsoft.com/en-us/library/ff506248.aspx

đã giúp tôi rất nhiều trong thời gian gần đây!

6

Dưới đây là những gì tôi bước ra khỏi Blend 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> 
Các vấn đề liên quan