我是 xaml 的新手,对堆栈面板和向其中添加东西有疑问
I am new to xaml and have questions about stackpanel and adding things to them
我在 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 位置到 space 控件,假设你可以像在面板中那样做。
谢谢!
您让 Button 和 StackPanel 填充了同一个网格单元格 (Grid.Column="0" Grid.Row="1")。 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>
我在 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 位置到 space 控件,假设你可以像在面板中那样做。
谢谢!
您让 Button 和 StackPanel 填充了同一个网格单元格 (Grid.Column="0" Grid.Row="1")。 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>