问题描述
我遇到扩展器的内容不是从左边开始的问题,我该如何解决? 正如你在图片上看到的,我的扩展器的内容没有显示在最左边。我尝试了很多设置,不幸的是我没有找到解决方案。扩展器本身似乎也有一个与堆栈面板相对的边缘,我也想避免这种情况。 在扩展器上方,您可以看到一个网格,其中包含一个带有内容的文本块。该网格在更高级别的堆栈面板中具有正确的质量。
Expander exp = new Expander
{
Header = "TestExpander",Width = spStackPanel.Width,ExpandDirection = ExpandDirection.Down,IsExpanded = true,BorderBrush = Brushes.Yellow,BorderThickness = new Thickness(1),HorizontalAlignment = HorizontalAlignment.Left,HorizontalContentAlignment = HorizontalAlignment.Left,VerticalAlignment = VerticalAlignment.Top,VerticalContentAlignment = VerticalAlignment.Top,};
TextBox tx = new TextBox
{
Text = "testText"
};
exp.Content = tx;
spStackPanel.Children.Add(exp);
解决方法
对于有些含糊的答案,我无法发表评论,但分享用于创建屏幕截图的样式和 XAML 可能会有所帮助。默认情况下,Expander 的外观并非如此,因此我的猜测是您的样式中的某些内容或更高级别的控件之一(例如 StackPanel 或 Grid)正在影响 Expander 的布局。
示例可能是 TextBox 的无键样式,它应用了填充和/或水平对齐方式,然后会通过在代码段中创建一个新的 TextBox 以使其具有奇怪的对齐方式来影响您添加的内容。
,我在这里写了一个测试,直接在没有 XML 的 .cs 文件中:
buttonGrid = new Grid();
buttonGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(50) });
buttonGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(50) });
Expander exp = new Expander()
{
Header = "Test Expander",HorizontalAlignment = HorizontalAlignment.Left,Margin = new Thickness(0),IsExpanded = true
};
TextBlock label = new TextBlock()
{
HorizontalAlignment = HorizontalAlignment.Left,Text = "Test Text"
};
exp.Content = label;
Grid.SetRow(exp,0);
buttonGrid.Children.Add(exp);
TextBlock text = new TextBlock()
{
HorizontalAlignment = HorizontalAlignment.Left,Text = "Test Text",Foreground = Brushes.White
};
Grid.SetRow(text,1);
buttonGrid.Children.Add(text);
我知道扩展器通常不是这样的,所以我问我的问题;-) 也许有人让我寻找提示。