WPF:按可用宽度而不是按内容展开文本框?

WPF:按可用宽度而不是按内容展开文本框?,wpf,textbox,width,stretch,Wpf,Textbox,Width,Stretch,我需要一个好的解决方案,使一个文本框在网格中扩展到它的可用空间,但不扩大根据多长的文字在它发生 我找到的大多数解决方案是制作一个虚拟边界并绑定到它的实际宽度,但对我来说这是一个很难破解的解决方案。边界解决方案也需要在边界上设置一个小的边距,这一点都不好。将其设置为低将导致UI行为异常。我不喜欢这个解决方案。一定有更好的吗?我只希望文本框不随内容扩展。不应该那么难。请让我知道怎么做 编辑: 我注意到的一件奇怪的事情是,以下代码使边界比必须的边界大得多: <Grid> <Bor

我需要一个好的解决方案,使一个文本框在网格中扩展到它的可用空间,但不扩大根据多长的文字在它发生

我找到的大多数解决方案是制作一个虚拟边界并绑定到它的实际宽度,但对我来说这是一个很难破解的解决方案。边界解决方案也需要在边界上设置一个小的边距,这一点都不好。将其设置为低将导致UI行为异常。我不喜欢这个解决方案。一定有更好的吗?我只希望文本框不随内容扩展。不应该那么难。请让我知道怎么做

编辑:

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

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


替换边框和文本框顺序可以使边框很好地适应文本框,但我需要的恰恰相反。如前所述,将边距(在边框上)设置为至少0.5可以使其工作,但会导致UI有点抖动。

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

您找到解决此问题的方法了吗

边界问题的答案:应该将TextBox对象放在边界内

    <Border Background="Red" Padding="3">
        <Button Content="Button" />
    </Border>

我使用DockPanel扩展到其可用空间。您还必须设置边距:

<DockPanel>
   <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DockPanel}, Path=ActualWidth}" Margin="1" />
</DockPanel>


如果网格中只有一个文本框,默认情况下它应该延伸到其父文本框。您确定没有修改HorizontalAlignment属性的内容吗?你说的是网格控件还是其他控件(如DataGrid或GridView),你称之为网格?是的,但我的网格没有明确的大小,它的单元格应该扩展到它的内容。问题是textbox控件也会扩展到其内容。。。在我的场景中,如果一个组合框扩展到它的内容,它是可以的,但是对于一个文本框来说,它不能做同样的事情。它也扩展了网格和我的窗口,因为我使用SizeToContent=WidthAndHeight。所以你想让你的文本框有固定的宽度?它在编译时已知吗?不知道。它应该填充单元格中的整个空间,但决不能用文本内容展开。