为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 MyToolkit 自定义 UWP DataGrid?

如何从 MyToolkit 自定义 UWP DataGrid?

C#
红颜莎娜 2023-04-29 16:39:10
我正在构建一个 UWP 应用程序,我需要将 DataGrid 分成四个相等的部分,如下所示:但是到目前为止,没有任何方法可以设置单元格的颜色。有没有办法在 C# 中以编程方式执行此操作?编辑:经过大量研究,我最终使用 Grid、一堆标签 + 边框和一个虚拟文本框从头开始开发。最后的结果其实还不错:
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

有一种简单的方法可以满足您的要求。您只需要定义 DataTemplateDataGridTemplateColumn.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; }

}


查看完整回答
反对 回复 2023-04-29
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信