我是xaml的新手,对stackpanel有疑问并向他们添加内容

时间:2018-03-25 15:27:46

标签: c# xaml custom-controls stackpanel

我在xaml上的代码看起来像这样

   </Grid>
    <Grid Grid.Column="1" Grid.Row="0" >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" ></RowDefinition>
            <RowDefinition Height="Auto" ></RowDefinition>
            <RowDefinition Height="*" ></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" Content="Updates Avalable"></Label>

        <Button Name="btnUpdate" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" MouseDoubleClick="btnUpdate_MouseDoubleClick" >Check For Available Updates</Button>
        <StackPanel Name="controlHolder" Grid.Column="0" Grid.Row="1">

        </StackPanel>
    </Grid>

然后我创建一个自定义控件并尝试将其添加到stackPanel,就像这样

            File_Type_Control_Green ftcg = ftc.GeneratefileTypeControl("file", "hello", "3mb", "someurl", "2-3-4");
        controlHolder.Children.Add(ftcg);

然而,当我这样做时,它实际上把它放在按钮内。

在Windows窗体中,您只需向面板添加控件即可,但这似乎是wpf中的一个大问题。我不知道如何解决这个问题。有人能指出我正确的方向吗?

主要目标是将新控件动态添加到堆栈面板。我还没有完成它,但我会添加xy位置来正确控制控件,假设你可以像在面板中那样做。

谢谢!

1 个答案:

答案 0 :(得分:2)

你有Button和StackPanel填充相同的网格单元格(Grid.Column =&#34; 0&#34; Grid.Row =&#34; 1&#34;)。 StackPanel具有更高的Z-Index,但默认情况下它具有透明背景,并且当它们重叠时,您可能无法将它们区分开来。也许您可以将Button和StackPanel都包装到另一个StackPanel中。

<Grid Grid.Column="1" Grid.Row="0" >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" ></RowDefinition>
        <RowDefinition Height="Auto" ></RowDefinition>
        <RowDefinition Height="*" ></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Label Grid.Column="0" Grid.Row="0" HorizontalAlignment="Center" Content="Updates Avalable"></Label>
    <StackPanel Grid.Column="0" Grid.Row="1" Orientation="Vertical">
        <Button Name="btnUpdate" />
        <StackPanel Name="controlHolder" />
    </StackPanel>
</Grid>