C# 在动态栅格上设置覆盖背景面板

C# 在动态栅格上设置覆盖背景面板,c#,wpf,xaml,grid,C#,Wpf,Xaml,Grid,对,所以我在一个标准WPF网格面板上画了一个看起来像DataGrid的东西 内容控件本质上是网格行和列引用的边框控件中的TextBlock控件,用于创建总体布局,在运行时使用常用的Grid.SetRow()和Grid.SetColumn()方法添加 并不是每个X和Y网格引用都有一个内容控件-这是由网格数据的运行时定义决定的。我使用偏移量值来标记XY对是行/列的“标题”的一部分,还是网格引用是“数据”部分的一部分 我试图在整个“数据”部分设置渐变背景。我使用了一个带有渐变笔刷的栅格控件,如下所示:

对,所以我在一个标准WPF网格面板上画了一个看起来像DataGrid的东西

内容控件本质上是网格行和列引用的边框控件中的TextBlock控件,用于创建总体布局,在运行时使用常用的Grid.SetRow()和Grid.SetColumn()方法添加

并不是每个X和Y网格引用都有一个内容控件-这是由网格数据的运行时定义决定的。我使用偏移量值来标记XY对是行/列的“标题”的一部分,还是网格引用是“数据”部分的一部分

我试图在整个“数据”部分设置渐变背景。我使用了一个带有渐变笔刷的栅格控件,如下所示:

//Grey background to show for "grey cells"
Grid greyBackground = new Grid()
{
     Background = (Brush)this.Resources["BackgroundBrush"],
     VerticalAlignment = System.Windows.VerticalAlignment.Stretch,
     HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch,
     Width = double.NaN,
     Height = double.NaN,
};
greyBackground.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
greyBackground.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });

Grid.SetColumn(greyBackground, _vm.Definition.ColumnOffset);
Grid.SetRow(greyBackground, _vm.Definition.RowOffset);
Grid.SetColumnSpan(greyBackground, _vm.Definition.Columns - _vm.Definition.ColumnOffset);
Grid.SetRowSpan(greyBackground, _vm.Definition.Rows - _vm.Definition.RowOffset);
cellGrid.Children.Add(greyBackground);
然而,这一点根本看不见。我不知道为什么


你知道我如何在其他“数据”控件下面的这些行/列位置上显示渐变背景绘制控件吗?

@HighCore,我不是说我不同意你的观点,但你的评论没有多大帮助。你可以向OP解释为什么这是一个坏主意,或者提供一个替代方法吗?@Stewbob,这太长了,无法发表评论,需要我发布一个答案。我对此犹豫不决,因为它不会像现在这样回答这个问题。因此,我可能会被否决。@Bob,但是,如果你想让我提到另一种方法,我会对其他人说:在用WPF编写一行代码之前先学习MVVM。@HighCore这恐怕是一个有用的建议(你能在尝试之前/不尝试之前学会走路吗?)。。。不管怎么说,对OP来说:这太错了…@StefanDenchev,这显然是我的夸张。我是人类历史上最夸张的人。