我正在将以下 Windows 窗体视图移植到 Avalonia:
Loading... (56%)
是一个 Label
控件,已添加到 Form
,且 Anchor
属性设置为 Bottom, Right
,因此在调整窗体大小时它将保留在右下角。它的 Z 顺序使得它始终出现在背景中“Lorem ipsum”文本框的前面。加载完成后,标签将隐藏。
如何将其移植到 Avalonia?我正在研究
Canvas
类,它允许完全自由的放置,但这给程序员准确更新 Canvas.Left
等属性带来了负担。有没有更简单的方法来实现这一点?
我的第一个想法是,我建议创建一个 2 行 2 列的网格。然后,您可以将加载文本元素放置在网格的第二行第二列中。您的主要文本也将是网格子项,但 Grid.RowSpan 和 Grid.ColumnSpan 参数设置为 2。
至于实际的降价,可能是这样的:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*">
<ColumnDefinition Width="100">
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Width="*">
<RowDefinition Width="20">
</Grid.RowDefinitions>
<TextBox Grid.ColumnSpan="2" Grid.RowSpan="2" />
<Label Grid.Row="1" Grid.Column="1" Text="Loading (56%)" />
</Grid>
如果您确实想灵活地加载文本,您可以将所有这些放在单独的控件中,并用 ContentPresenter 替换 TextBox。这样,您可以使用这个新创建的控件包装任何内容,并向其添加加载文本(或更确切地说任何文本)。
希望有帮助