首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从MyToolkit自定义UWP DataGrid?

如何从MyToolkit自定义UWP DataGrid?
EN

Stack Overflow用户
提问于 2019-06-22 17:39:47
回答 1查看 420关注 0票数 0

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

但到目前为止,细胞颜色的设定还没有起作用。在C#中有任何方法可以编程地做到这一点吗?

编辑:

经过大量的研究,我结束了从零开始使用网格、一堆标签+边界和一个虚拟TextBox的开发。最终的结果其实是相当好的:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-25 02:43:51

有一个简单的方法可以得到你的需求。您只需为DataTemplate定义DataGridTemplateColumn.CellTemplate并将背景绑定到自定义类中的某个属性。

请参阅下面的简单代码示例:

代码语言:javascript
复制
<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>
代码语言:javascript
复制
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; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56717716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档