有沒有辦法在DataGrid中的兩個特定列之間創建一個可視化分隔符?它不需要花哨,也許只是雙線或更厚的邊界。創建DataGrid列分隔符
3
A
回答
3
在情況下,它是這樣的
可以實現使用自定義樣式:如果您生成代碼隱藏列
<Window.Resources>
<Style x:Key="DataGridColumnSeparatorStyle" TargetType="DataGridCell">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Rectangle VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Fill="Gray"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Start"/>
<DataGridTextColumn Header="End"/>
<!-- Separator column -->
<DataGridTemplateColumn MinWidth="0" Width="2" CellStyle="{StaticResource DataGridColumnSeparatorStyle}"/>
<DataGridTextColumn Header="Start"/>
<DataGridTextColumn Header="End"/>
</DataGrid.Columns>
</DataGrid>
,或者通過自動生成的列或其他,您仍然可以通過從XAML獲取資源來創建分隔符列:
DataGridTextColumn s1 = new DataGridTextColumn() { Header = "Start" };
DataGridTextColumn s2 = new DataGridTextColumn() { Header = "Start" };
DataGridTextColumn e1 = new DataGridTextColumn() { Header = "End" };
DataGridTextColumn e2 = new DataGridTextColumn() { Header = "End" };
DataGridTemplateColumn column = new DataGridTemplateColumn();
column.MinWidth = 0;
column.Width = 2;
var separatorStyle = (Style)FindResource("DataGridColumnSeparatorStyle");
column.CellStyle = separatorStyle;
dataGrid.Columns.Add(s1);
dataGrid.Columns.Add(e1);
dataGrid.Columns.Add(column);
dataGrid.Columns.Add(s2);
dataGrid.Columns.Add(e2);
+0
使用鍵盤在單元格中導航時,分隔欄將獲得焦點。這是不受歡迎的... –
3
我想你有兩個選擇。最簡單的選項可能是使用Style
並將DataGrid.CellStyle
設置爲定義的樣式。
<Style x:Key="DataGridBorder" TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="LightGray" />
<Setter Property="BorderThickness" Value="1,1,1,1" />
</Style>
...
<DataGrid CellStyle="{StaticResource DataGridBorder}">
...
另一種選擇是在與DataGridTemplateColumn
一起使用CellTemplate
。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border BorderBrush="LightGray" BorderThickness="1,1,1,1" Margin="-6,-6,-6,-6">
<Grid Margin="6,6,6,6">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Whatever}" Grid.Column="0" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" />
</Grid>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我還沒有測試過其中的任何一個,而且您可能必須稍微使用邊距。
1
試試這個。當通過細胞使用鍵盤上的Tab鍵導航,也不會集中在分隔符列:
<DataGridTemplateColumn MinWidth="2" MaxWidth="2" IsReadOnly="True" CanUserResize="False">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="Gray" />
<Setter Property="BorderBrush" Value="Gray" />
<Setter Property="BorderThickness" Value="2" />
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderBrush" Value="Gray" />
<Setter Property="BorderThickness" Value="2" />
<Setter Property="Focusable" Value="False" />
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
相關問題
- 1. 創建一個分隔符
- 2. 創建固體分隔符
- 3. DataGrid創建RadioButton列
- 4. 列分隔符
- 5. 創建由字符串空格分隔的字符列表
- 6. 創建逗號分隔文件 - 尾隨分隔符
- 7. 創建管道分隔字符串
- 8. 創建一個盒子分隔符
- 9. 如何創建制表符分隔CSV?
- 10. 垂直創建水平分隔符UIStackView
- 11. TO逗號分隔符創建多行
- 12. 創建制表符分隔文件
- 13. Silverlight Datagrid列標題文本分隔線
- 14. 用c#創建帶分隔列的分隔文本
- 15. XSLT創建逗號分隔的列表
- 16. 如何創建間隔序列分配
- 17. 創建物化視圖並分隔列
- 18. 按創建日期分隔列表
- 19. 在datagrid中創建multipe列
- 20. 在datagrid列中添加點分隔符而不是逗號
- 21. 在Postgres中用分隔符分隔列
- 22. 創建逗號的字符串分隔行情從列表
- 23. 需要創建一個下拉列表分隔符
- 24. 如何分隔[字符串]「 - 」並在Android上創建多列?
- 25. 在Html Helper中使用分隔符創建選擇列表
- 26. 從點分隔字符串列表中創建一個JTree
- 27. 如何從分隔字符串創建多列
- 28. SQL Server導入/導出:如何創建列分隔符EXCEPTION
- 29. 拆分列分隔符R
- 30. 分割多列分號分隔的字符串和創建記錄
生成自動列或者是你指定集合? –
我通過遍歷所有對象並添加任何不在集合中的列來指定列。這是爲了將所有的列都放到表中,儘管並不是所有的對象都會定義所有的列。 – shader
祝你好運。每次我試圖對wpf DataGrid做一些有趣的事情時,我都很後悔。 –