C# 我的Win2D画布控件没有';t根据内容自动调整自身大小';s维度。(UWP)
因此,我正在通过Win2D创建一个文本编辑器,以克服UWP playtform的C# 我的Win2D画布控件没有';t根据内容自动调整自身大小';s维度。(UWP),c#,xaml,uwp,uwp-xaml,win2d,C#,Xaml,Uwp,Uwp Xaml,Win2d,因此,我正在通过Win2D创建一个文本编辑器,以克服UWP playtform的RichEditBox限制。基本上我有一个CanvasControl,我使用它通过draw事件的args.DrawingSession.DrawTextLayout()方法来绘制文本 问题在于,CanvasControl无法调整自身大小以适应其中绘制的内容。是否有我无法启用的功能,或者是否应该在每次调用Draw事件处理程序时手动启用?处理这个问题最有效的方法是什么?谢谢 CanvasTextLayout.Layout
RichEditBox
限制。基本上我有一个CanvasControl
,我使用它通过draw
事件的args.DrawingSession.DrawTextLayout()
方法来绘制文本
问题在于,
CanvasControl
无法调整自身大小以适应其中绘制的内容。是否有我无法启用的功能,或者是否应该在每次调用Draw
事件处理程序时手动启用?处理这个问题最有效的方法是什么?谢谢 CanvasTextLayout.LayoutBounds.Height
是对CanvasControl
内部渲染高度的描述,但这不是CanvasControl
控件本身的高度(事实上,CanvasControl.Height
在调试中总是显示NaN
)
只有当CanvasControl
的Height
属性大于ScrollViewer
的高度时,才会显示滚动条
因此,在渲染文本后,可以手动设置画布控件的高度
//呈现代码
// ...
双倍高度=textLayout.LayoutBounds.height;
画布控制。高度=高度;
致以最诚挚的问候。谢谢您的回复。我正在使用这种方法。我使用“canvasTextLayout.LayoutBounds.Height”作为画布控件的高度。我在Draw事件调用期间,在设置文本并设置其样式之后设置它。我发现它可以这样工作,但仍然怀疑这是否是正确的方法。CanvasControl本身无法根据其内容的宽度/高度调整自身大小,这对我来说毫无意义。我想,一旦我调用“args.DrawingSession.DrawTextLayout()”,CanvasControl应该根据内容调整大小。所以我想我做对了:“画布控件本身没有能力根据其内容的宽度/高度调整自身大小,这对我来说没有意义。”-恰恰相反;一般来说,绘制图形的代码应该根据画布的大小来绘制。如果你想要一个适合你内容大小的容器,画布不是合适的合成模型。你能详细说明一下吗?对于我正在做的事情,你会采取不同的方法吗?我得出的结论是(不知何故)Win2D的文本绘制API非常适合设计编辑器。如果这是真的,那么编辑器本身需要调整自身大小以适应它自己的文本内容。CanvasControl
作为一个渲染控件,其设计不是基于Panel
之类的内容。面板中有控件。渲染应用程序时,控件高度是可计算的,这将影响其他控件的布局。CanvasControl
的内部呈现不一定是控件
。虽然渲染高度可以在内部计算,但它不一定会影响控件本身的大小(例如文本重叠)。