在堆栈面板中看不到整个对象?



我是WPF的新手,试图创建他的第一个正常项目,这是一个笔记应用程序。每个音符都连接到button,我认为它在StackPanel中看起来会很漂亮。我在StackPanel中动态创建buttons,但问题是,当我向下滚动Buttons最后Button的列表时,无法完全看到。我认为这是因为Margin并试图调整它,但它没有帮助,autoHeightWidth也没有帮助。StackPanelScrollViewer内,当我到达ScrollBar的末尾时,我只能看到最后一个按钮的一半?

StackPanel的XAML代码:

<ScrollViewer VerticalScrollBarVisibility="Auto" 
Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="3" Margin="50 -50 50 5" >
<StackPanel x:Name="ButtonPanel"/>
</ScrollViewer>

这就是我如何创建Button:

dynamicTextBox.Add(SearchNotes); 
dynamicTextBox[index_of_buttons] = new TextBox();
Grid.SetRow(dynamicTextBox[index_of_buttons], 1);
Grid.SetColumn(dynamicTextBox[index_of_buttons], 0);
this.ButtonPanel.Children.Add(dynamicTextBox[index_of_buttons]);
dynamicTextBox[index_of_buttons].IsReadOnly = false;
dynamicTextBox[index_of_buttons].Text = "";

其中dynamicTextBoxTextBoxList<>,应用了模板(我认为没有必要看到模板来解决问题)

它看起来是这样的:无法看到整个按钮(最后一个)

我想看到整个按钮

正如Andy在评论部分所写的,ListBox是解决这个问题的最佳方案。我试着让它看起来和在StackPanel

中完全一样Xaml:

<ListBox Name="ListBoxOfButtons" Background="#404040" BorderThickness="0" 
HorizontalContentAlignment="Stretch" Grid.Row="1" Grid.Column="0" 
Grid.ColumnSpan="3" Grid.RowSpan="3" Margin="50 -20 50 5">
</ListBox>

c#:

var txtBox = new TextBox();
txtBox.Template = FindResource("TemplateForTextBox") as ControlTemplate;
ListBoxOfButtons.Items.Add(txtBox);

这是最后一个按钮现在的样子

最新更新