0

我有扩展器的内容不是从左边开始的问题,我该如何解决?正如你在图片上看到的,我的扩展器的内容没有显示在最左边。我尝试了很多设置,不幸的是我没有找到解决方案。扩展器本身似乎也有一个与堆栈面板相对的边缘,我也想避免这种情况。在扩展器上方,您可以看到一个网格,其中包含一个带有内容的文本块。该网格在更高级别的堆栈面板中具有正确的质量。

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

在此处输入图像描述

4

2 回答 2

0

对于这个有点模糊的答案,我无法评论,但它可能有助于分享用于创建屏幕截图的样式和 XAML。默认情况下,这不是扩展器的外观,所以我猜测您的样式或更高级别的控件之一(例如 StackPanel 或网格)正在影响扩展器的布局。

示例可能是 TextBox 应用填充和/或水平对齐的无键样式,然后通过在代码段中创建一个新的 TextBox 以使其具有奇怪的对齐方式,这将影响您添加的内容。

于 2021-04-23T03:33:06.660 回答
0

我在这里写了一个测试,直接在一个没有 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,
            Margin = new Thickness(0),
            Text = "Test Text"
        };
        exp.Content = label;
        Grid.SetRow(exp, 0);
        buttonGrid.Children.Add(exp);

        TextBlock text = new TextBlock()
        {
            HorizontalAlignment = HorizontalAlignment.Left,
            Margin = new Thickness(0),
            Text = "Test Text",
            Foreground = Brushes.White
        };
        Grid.SetRow(text, 1);
        buttonGrid.Children.Add(text);

我知道扩展器通常看起来不像这样,所以我问我的问题 ;-) 也许有人有我要寻找的提示。

在此处输入图像描述

于 2021-04-23T07:50:59.373 回答