12

我需要一个很好的解决方案来在网格中制作一个 TextBox 以扩展到其可用空间,但不会根据其中文本的长度进行扩展。

我发现的大多数解决方案是制作一个虚拟边框并绑定到它的 ActualWidth ,但它对我来说是一个 hacky 解决方案。边框解决方案也需要在边框上设置一个小边距,这一点都不好。将其设置为低会导致 UI 表现得非常奇怪。不喜欢这个解决方案。一定有更好的吗?我想要的只是文本框不随内容扩展。它不应该那么难。请让我知道如何做到这一点。

编辑:

我注意到的一件奇怪的事情是,以下代码使边框比它必须要大得多:

<Grid>
  <Border Name="dummy1" Background="Red" />
  <TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" />
</Grid>

替换边框和文本框顺序使边框很好地适合文本框,但我需要的是相反的。如前所述,将 Margin(在边框上)设置为至少 0.5 可以使其工作,但结果是 UI 有点抽搐。

4

3 回答 3

4

我使用 DockPanel 来扩展它的可用空间。您也必须设置保证金:

<DockPanel>
   <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DockPanel}, Path=ActualWidth}" Margin="1" />
</DockPanel>
于 2014-12-17T17:45:25.643 回答
2

Horizo​​ntalAlignment=拉伸没有帮助?当水平对齐设置为拉伸时,AFAIK 网格面板将其子元素拉伸到其单元格中的可用空间。

于 2010-12-06T10:18:45.100 回答
1

你找到解决这个问题的方法了吗?

回答您的边框问题:您应该将 TextBox-Object 放在边框内。

    <Border Background="Red" Padding="3">
        <Button Content="Button" />
    </Border>
于 2011-12-26T17:38:39.643 回答