<Grid>
<ScrollViewer Height="391" HorizontalAlignment="Left" Margin="10,10,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="427" >
<Grid Height="733">
</Grid>
</ScrollViewer>
<TextBox Height="76" HorizontalAlignment="Left" Margin="19,453,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="254" />
<Button Content="Button" Height="77" HorizontalAlignment="Left" Margin="290,450,0,0" Name="button1" VerticalAlignment="Top" Width="136" />
</Grid>
我想在用户点击按钮时在滚动查看器中添加一个复选框。每次点击时,新复选框也应显示在前一个下方。而且,ScrollViewer是否可以完成此任务的理想控制?
答案 0 :(得分:3)
如果您希望复选框显示在彼此下方,则应使用StackPanel而不是Grid作为SrollViewer中的容器:
<ScrollViewer Height="391" HorizontalAlignment="Left" Margin="10,10,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="427" >
<StackPanel Name="CheckBoxContainer">
</StackPanel>
</ScrollViewer>
在点击事件中添加复选框
CheckBoxContainer.Children.Add(new CheckBox());
答案 1 :(得分:2)
您需要将复选框添加到ScrollViewer中包含的网格中。这可以使用类似于:
的代码来完成myGrid.Children.Add(new CheckBox());
假设“myGrid”是网格的名称。
当您的有限区域需要包含通常不适合该区域的内容时,ScrollViewer是一个很好的控件。由于我不知道你的应用程序是做什么的,它看起来是什么样的,或者它是如何工作的,所以从设计的角度来看很难说它是否是正确的控件。
然而,看到用户可能会添加10个(甚至100个)的复选框,那么您可能希望这不会扩展表单超出您的预期。
答案 2 :(得分:1)
对于继续添加复选框,请使用StackPanel而不是Grid
<Grid>
<ScrollViewer Height="391" HorizontalAlignment="Left" Margin="10,10,0,0" Name="scrollViewer1" VerticalAlignment="Top" Width="427" >
<StackPanel x:Name="stackPanel">
</StackPanel>
</ScrollViewer>
<TextBox Height="76" HorizontalAlignment="Left"
Margin="19,453,0,0" Name="textBox1" Text="TextBox" VerticalAlignment="Top" Width="254" />
<Button Content="Button" Height="77" HorizontalAlignment="Left"
Margin="290,450,0,0" Name="button1" Click="button1_Click" VerticalAlignment="Top" Width="136" />
</Grid>
而不是:
private void button1_Click(object sender, RoutedEventArgs e)
{
stackPanel.Children.Add(new CheckBox() { Content = "Hi"});
}