C++/WinRT - TextBlock,如何动态附加并将其位置 (x, y) 设置为 XAML 形式?

C++ /WinRT - TextBlock, how to dynamically attach and set its position (x, y) to XAML form?

下面是空白应用程序 (C++/WinRT) 项目。

我正在尝试创建一个 TextBlock 并根据 MainPage.cpp 动态设置其文本 (x,y) 属性 "Left" 和 "Top" 并在运行时显示它 XAML表格.

但是,为了测试,下面的代码能够成功编译,并且在运行时结果中,没有显示 TextBlock 组件 "Hellow World!"。

有什么错误或遗漏的吗?

namespace winrt::...::implementation
{
    MainPage::MainPage()
    {
        InitializeComponent();
        Process();
    }

    void MainPage::Process()
    {
        winrt::hstring hs = L"Hello World!";
        TextBlock tbx;
        tbx.FontFamily( Windows::UI::Xaml::Media::FontFamily( 
                        L"Segoe UI Semibold" ) );
        tbx.FontSize(72.0);
        tbx.Foreground( SolidColorBrush( Colors::Orange() ) );
        tbx.VerticalAlignment( VerticalAlignment::Center );
        tbx.TextAlignment( TextAlignment::Center );
        tbx.Text( hs );
        Window window = Window::Current();
        window.Content( tbx );
        window.Activate();
    }
}

请指教

根本问题是 XAML 布局问题。这是一个小演示,可以让您走上正确的轨道。我将上面的 MainPage 修改为如下所示:

MainPage::MainPage()
{
    InitializeComponent();

    winrt::hstring hs = L"Hello World!";
    TextBlock tbx;
    tbx.FontFamily(Windows::UI::Xaml::Media::FontFamily(
        L"Segoe UI Semibold"));
    tbx.FontSize(72.0);
    tbx.Foreground(SolidColorBrush(Colors::Orange()));
    tbx.VerticalAlignment(VerticalAlignment::Center);
    tbx.TextAlignment(TextAlignment::Center);
    tbx.Text(hs);
    this->Content().as<Panel>().Children().Append(tbx);
}

XAML 页面如下所示:

<Page ... >
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
        <Button x:Name="myButton" >Click Me</Button>
    </StackPanel>
</Page>

基本思想是您希望将控件添加到管理主页布局的面板,而不是将其添加到顶层 Window 对象。在设计器中稍微尝试一下以获得所需的外观,然后使用 C++/WinRT 将其重组为等效代码可能会有所启发。

刚刚发现这个作品:

    TranslateTransform pos;
    pos.X( 500 );
    pos.Y( 500 );
    tbx.RenderTransform( pos )

或者,从 Microsoft Build 2019 中找到了一个最新视频,它显示了一个 UWP C++ 示例 XAML,其中包含相关信息。

这里是 link:

认识 C++/WinRT 2.0:在开放环境中更快、更智能 - BRK4009 [https://www.youtube.com/watch?v=X41j_gzSwOY][1]