2012-02-13 34 views
0

iv'e有一个2行12列的网格。 我需要掺入风格这将在每个小区 总共24个细胞如何设置一个形状作为网格单元的背景

几何形状为三角形的示例的绘制三角形为:

M 0, 0 L 25, 250 L 50, 0 z 

如何i设计并使用样式这个形状在网格背景中的每个单元格中?

行高度大约为250和 列的宽度是大约50

enter image description here

可替代地,每个小区包含一个StackPanel
所以不同的解决办法是把它画成一个StackPanel的背景我怎么能画出这个形状作为stackpanel的背景?

回答

1

您只需为您的需求创建样式模板并将其应用于DataGrid。所以基本上你所做的只是将你的形状添加到DefaultDataGridCellStyle的模板中。我知道有几种方法可以做到这一点,但Expression Blend更容易。只需右键单击Blend中的数据网格,选择“编辑其他模板” - >查找GridCell模板和“编辑副本”,即可完成分钟。希望这可以帮助!

示例使用三角形的路径数据和设置为您的规格的高度/宽度。

样式模板(基于默认的gridcell模板);

<Style x:Key="NewDataGridCellStyle" TargetType="{x:Type DataGridCell}"> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="BorderBrush" Value="Transparent"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type DataGridCell}"> 
       <Grid Height="250" Width="50"> 
       <Path Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" HorizontalAlignment="Stretch" Height="Auto" Stretch="Fill" Stroke="#FF2B9F02" Width="Auto"/> 
       <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True"> 
         <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </Border> 
       </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/> 
       <Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
      </Trigger> 
      <Trigger Property="IsKeyboardFocusWithin" Value="True"> 
       <Setter Property="BorderBrush" Value="{DynamicResource {x:Static DataGrid.FocusBorderBrushKey}}"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

该ref;

<DataGridCell Content="DataGridCell" Style="{DynamicResource NewDataGridCellStyle}"/> 

或者如果你的字面意思只是一个单元格到默认的常规网格;

<Grid Width="150" Height="500"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="50"/> 
      <ColumnDefinition Width="50"/> 
      <ColumnDefinition Width="50"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="250"/> 
      <RowDefinition Height="250"/> 
      <RowDefinition Height="250"/> 
     </Grid.RowDefinitions> 
      <Path Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" Stroke="#FF2B9F02" /> 
      <Path Grid.Row="1" Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" Stroke="#FF2B9F02" /> 
      <Path Grid.Column="1" Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" Stroke="#FF2B9F02" /> 
      <Path Grid.Column="2" Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" Stroke="#FF2B9F02" /> 
      <Path Grid.Row="1" Grid.Column="1" Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" Stroke="#FF2B9F02" /> 
      <Path Grid.Row="1" Grid.Column="2" Data=" M 0, 0 L 25, 250 L 50, 0 z" Fill="#FF39D203" Stroke="#FF2B9F02" /> 
    </Grid> 
+0

嗯,我真的不知道如何使用混合 我明白我需要TI创建模板 ,但我不明白我需要什么属性设置为使用的StackPanel 的,因为背景是彩色。 或者我怎样才能在标记中引用网格单元 – 2012-02-13 20:42:31

+0

您希望三角形在网格单元中出现的确切程度?我可以让你成为一个例子,并告诉你如何引用它。 – 2012-02-13 20:46:05

+0

我会很感激,我提供了上面的问题中的形状的几何,它假设填充行的整个高度为 ,每个单元格和每个单元格的宽度为 每个单元格将边界三角形(三角形将是背景) – 2012-02-13 20:55:03

相关问题