Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的Win2D画布控件没有';t根据内容自动调整自身大小';s维度。(UWP)_C#_Xaml_Uwp_Uwp Xaml_Win2d - Fatal编程技术网

C# 我的Win2D画布控件没有';t根据内容自动调整自身大小';s维度。(UWP)

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

因此,我正在通过Win2D创建一个文本编辑器,以克服UWP playtform的
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
的内部呈现不一定是
控件
。虽然渲染高度可以在内部计算,但它不一定会影响控件本身的大小(例如文本重叠)。