2012-08-15 2 views
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에 체크 박스를 추가하고 싶습니다. 클릭 할 때마다 이전에 새 확인란이 나타납니다. 또한 ScrollViewer는이 작업을위한 이상적인 컨트롤입니까?코드로 스크롤 뷰어에 체크 박스를 추가하는 방법은 무엇입니까?

답변

3

당신은 체크 박스 당신이 SrollViewer 내부의 컨테이너로 대신 그리드의 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()); 
2

ScrollViewer에 포함 된 표에 확인란을 추가하려고합니다. 이는 다음과 유사한 코드를 사용하여 수행 할 수 있습니다.

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

"myGrid"는 그리드의 이름이라고 가정합니다.

ScrollViewer는 제한된 영역에 해당 영역에 적합하지 않은 내용이 포함되어 있어야 할 때 사용할 좋은 컨트롤입니다. 응용 프로그램이 무엇인지, 어떤 모습인지 또는 어떻게 작동하는지 모르기 때문에 이것이 올바른 제어인지 여부는 설계 관점에서 말하기가 어렵습니다.

그러나 사용자가 잠재적으로 10의 (심지어 100의) 체크 박스를 추가 할 수있는 것처럼 보일 때,이 기능을 사용하면 원하는대로 양식을 확장하지 않을 수 있습니다.

+0

감사합니다. 감사합니다. –

1

확인란을 계속 추가하려면 대신 GridPack을 사용하십시오.

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