1
<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 はこのタスクの理想的なコントロールですか?

4

3 に答える 3

3

チェックボックスを互いの下に表示する場合は、SrollViewer 内のコンテナーとして Grid の代わりに StackPanel を使用する必要があります。

   <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());
于 2012-08-15T11:04:51.730 に答える
2

ScrollViewer 内に含まれるグリッドにチェックボックスを追加する必要があります。これは、次のようなコードを使用して実行できます。

myGrid.Children.Add(new CheckBox());

「myGrid」がグリッドの名前であると仮定します。

ScrollViewer は、通常はその領域に収まらないコンテンツを含める必要がある限られた領域がある場合に使用するのに適したコントロールです。あなたのアプリケーションが何をするか、どのように見えるか、またはどのように機能するかを私は知らないので、設計の観点から、これが適切なコントロールであるかどうかを言うのはかなり難しい.

ただし、ユーザーがチェックボックスを数十個 (場合によっては数百個) 追加する可能性があることを考えると、これによってフォームが必要以上に拡張されないようにする必要があります。

于 2012-08-15T10:46:39.510 に答える
1

チェック ボックスを追加し続けるには、Grid の代わりに StackPanel を使用します。

<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"});
}
于 2012-08-15T11:06:33.223 に答える