1

我试图让一个RichEditBox接管应用程序窗口的整个宽度并响应窗口大小调整,到目前为止,我拥有的代码如下:

<RichEditBox HorizontalAlignment="Stretch"
             TextWrapping="WrapWholeWords"
             Height="250"
             Name="Intro"/>

我从上面的代码中得到的是: 在此处输入图像描述

关于如何让它发挥作用的任何想法?为什么我告诉文本换行但它没有跟随?

更新

我也试过这个:

<RichEditBox HorizontalAlignment="Stretch"
                         Height="250"
                         Name="Intro"/>

但结果是:

在此处输入图像描述

我遇到的问题是它似乎HorizontalAlignment="Stretch"并没有真正做任何事情。我能够设置合适宽度的唯一方法是对其进行硬编码,例如:Width="600". 但如果我这样做,我的 UI 将无法正确响应调整大小。我也试过HorizontalContentAlingment="Stretch",但结果完全一样。

我怎样才能同时RichEditBox占用所有可用Width Wrap资源?

4

1 回答 1

1

如果您查看RichEditBox.TextWrapping的文档,您会发现这WrapWholeWords是无效的。你必须使用

<RichEditBox TextWrapping="Wrap"/>
-or-
<RichEditBox TextWrapping="NoWrap"/>

由于 Wrap 是默认值,因此您可以删除该属性。

<RichEditBox HorizontalAlignment="Stretch"
             Height="250"
             Name="Intro"/>

编辑:回复更新的问题:

控件只占用其父控件的宽度。一些容器控件(例如Grid)自动采用可用的全宽,而其他容器控件(例如StackPanel)仅采用其子项的所需大小。HorizontalAlignment="Stretch"与 a 结合使用作为StackPanel父控件,将仅使用该MinWidth属性而不是屏幕上的完整可用宽度。有时您无法直接看到此问题,例如当您的控件位于ListView. 使用 Visual Studio 中的Live Visual Tree查找父容器并定位问题。

简而言之:确保您的 RichEditBox 位于 Grid(或类似控件)而不是 StackPanel 中。

于 2016-07-24T10:18:46.800 回答