如何通过代码向scrollviewer添加复选框?

时间:2012-08-15 10:41:03

标签: c# windows-phone-7 silverlight-toolkit

<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是否可以完成此任务的理想控制?

3 个答案:

答案 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"});
}