[英]WPF adding stackpanel with border to grid gives error
我正在WPF中的嵌套网格/堆栈面板/网格窗口上工作。 它是Calander,主格为一天。 在这一天,有一个文本框和一个堆栈面板。 堆栈面板包含一个网格。 EVerything在运行时在c#中完成,因为布局会随着当前月份/年份而变化。 没有什么大问题,除非我想在堆栈面板上添加边框。 它给出以下错误:
PresentationFramework.dll中发生了类型为'System.Windows.Markup.XamlParseException'的未处理异常。其他信息:'与指定绑定约束匹配的'ADBF.ToezAcad.Admin.OpleidingKalender.MainWindow类型的构造函数调用'引发了异常。” 行号“ 3”和行位置“ 9”。
这个职位没什么特别的。
有趣的是,当我将stackpanel(带有border)添加到包含网格的那一刻,它只会给出此错误。
代码的简短版本:
Border stackpanelborder = new Border();
this.Content = stackpanelborder;
StackPanel stackpanel = new StackPanel();
stackpanelborder.Child = stackpanel;
Grid.SetColumn(stackpanel, m);
Grid.SetRow(stackpanel, d + 1);
mainGrid.Children.Add(stackpanel); // if I uncomment this line, it throws the error.
任何帮助将不胜感激,
阿诺德
@ADBF,您正在将StackPanel
添加到两个不同的子集合。 每个UIElement在视觉树中应该只有一个父级,尽管一个UIElement可能有很多子级,具体取决于其类型。
我认为您想改为将stackpanelborder
添加到stackpanelborder
的子mainGrid
。
编辑:
你也应该引用stackpanelborder
在SetColumn / SetRow方法不stackpanel
。
究其原因,因为是stackpanel
是一个孩子stackpanelborder
它将是里面的UIElement呈现。 但是,假设您打算稍后添加其他列/行, stackpanelborder
需要告知stackpanelborder
在网格中的插入位置。
基本上,您的XAML文档(如果有的话)应如下所示:
<Grid Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition .../>
<ColumnDefinition .../>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition .../>
<RowDefinition .../>
</Grid.RowDefinitions>
<Border Name="stackpanelborder" Grid.Row="0" Grid.Column="0" ...>
<StackPanel Name="stackpanel" .../>
</Border>
</Grid>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.