繁体   English   中英

WPF将带有边框的stackpanel添加到网格会产生错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM