您只需为您的需求创建样式模板并将其应用于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>
嗯,我真的不知道如何使用混合 我明白我需要TI创建模板 ,但我不明白我需要什么属性设置为使用的StackPanel 的,因为背景是彩色。 或者我怎样才能在标记中引用网格单元 – 2012-02-13 20:42:31
您希望三角形在网格单元中出现的确切程度?我可以让你成为一个例子,并告诉你如何引用它。 – 2012-02-13 20:46:05
我会很感激,我提供了上面的问题中的形状的几何,它假设填充行的整个高度为 ,每个单元格和每个单元格的宽度为 每个单元格将边界三角形(三角形将是背景) – 2012-02-13 20:55:03