要呈现 XAML UIElement 的 WinRT 控件

WinRT control to render XAML UIElement

我正在将 WPF 应用程序移植到 WinRT 中。旧应用程序有一部分需要图像、MediaElement、Xaml 页面等;将其转换为 UIElement;然后接收者 class 将使用 VisualBrush 将其呈现到按钮上。

遗憾的是 WinRT 没有 VisualBrush。我已经尝试将内容设置为 UIElement 等。我还阅读了有关 RenderTargetBitmap 的内容,但是我认为它不会起作用,因为我也有视频内容。

有什么方法可以制作接受 UIElement 并正确呈现它的控件吗?

根据您想要实现的目标,您可以在 Button.Content 属性.

中设置 UIElement

Button.Content 属性 可以接受任何 UIElement。

例如,您可以执行以下操作:

MainPage.xaml

<Page ...>
<StackPanel  ...>
    <Button x:Name="myButton" Width="200" Height="200"
        HorizontalContentAlignment="Stretch"
        VerticalContentAlignment="Stretch" >

        <Button.Content>
            <local:Page2 />
        </Button.Content>
    </Button>
</StackPanel>
</Page>

Page2.xaml

<Page...>
    <Grid ...>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <Rectangle Fill="Red" />
        <Rectangle Fill="Yellow" Grid.Column="1"/>
        <Rectangle Fill="Blue" Grid.Row="1"/>
        <Button Content="Click Me" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center"/>
    </Grid>
</Page>

或来自后面的代码:

MainPage.xaml.cs

 public sealed partial class MainPage : Page
 {
    public MainPage()
    {
        this.InitializeComponent();
        myButton.Content    = new Page2();
    }
 }