我正在构建一个UWP应用程序,我需要将一个DataGrid分成四个相等的部分,如下所示:

但到目前为止,细胞颜色的设定还没有起作用。在C#中有任何方法可以编程地做到这一点吗?
编辑:
经过大量的研究,我结束了从零开始使用网格、一堆标签+边界和一个虚拟TextBox的开发。最终的结果其实是相当好的:

发布于 2019-06-25 02:43:51
有一个简单的方法可以得到你的需求。您只需为DataTemplate定义DataGridTemplateColumn.CellTemplate并将背景绑定到自定义类中的某个属性。
请参阅下面的简单代码示例:
<controls:DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding tests}" GridLinesVisibility="All">
<controls:DataGrid.Columns>
<!-- Name Column -->
<controls:DataGridTemplateColumn Header="Name">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="{Binding Color1}">
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn Header="Name">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="{Binding Color1}">
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn Header="Name">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="{Binding Color1}">
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn Header="Name">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="{Binding Color2}">
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn Header="Name">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="{Binding Color2}">
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridTemplateColumn Header="Name">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Background="{Binding Color2}">
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
</controls:DataGrid.Columns>
</controls:DataGrid>public sealed partial class MainPage : Page
{
public ObservableCollection<Test> tests { get; set; }
public MainPage()
{
this.InitializeComponent();
tests = new ObservableCollection<Test>();
for (int i = 0; i < 15; i++)
{
if (i < 7)
{
tests.Add(new Test() { Name = "Name " + i, Color1 = new SolidColorBrush(Colors.Yellow), Color2 = new SolidColorBrush(Colors.Red) });
}
else
{
tests.Add(new Test() { Name = "Name " + i, Color1 = new SolidColorBrush(Colors.Green), Color2 = new SolidColorBrush(Colors.LightBlue) });
}
}
this.DataContext = this;
}
}
public class Test
{
public string Name { get; set; }
public SolidColorBrush Color1 { get; set; }
public SolidColorBrush Color2 { get; set; }
}https://stackoverflow.com/questions/56717716
复制相似问题