左对齐并在 DockPanel 中填充 space

Align Left and fill space in DockPanel

我有一个 DockPanel,包含一个具有固定宽度的标签和一个具有 Min 和 MaxWidth 的 TextBox。我想将 TextBox 向左对齐并让它拉伸直到它的 MaxWidth 并让它收缩直到它的 MinWidth (例如,如果 Window 被调整大小)像这样:

面板:

<DockPanel LastChildFill="True">
   <Label Content="Fixed Width"  DockPanel.Dock="Left" />
   <TextBox MinWidth="80" MaxWidth="250" DockPanel.Dock="Left" HorizontalAlignment="Left" />
 </DockPanel>

然而,这只会将 TextBox 对齐到左侧。如果我遗漏了 Horizo​​ntalAlignment 它居中。 我怎样才能实现屏幕截图中的效果?

请注意,我不想使用网格,因为我需要将文本框包装在标签下方的某个位置(我将使用触发器来更改 Dock 属性 当前) .

看看这个解决方案:

您需要将 MinWidth="80" 从 TextBox 移动到 LeftStretchPanel。

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <DockPanel LastChildFill="True" Background="Yellow">
        <Label Content="Fixed Width" Background="Red" />
        <local:LeftStretchPanel MinWidth="80">
            <TextBox MaxWidth="250" Background="Blue" />
        </local:LeftStretchPanel>
    </DockPanel>
</ScrollViewer>