WinRT控件来呈现XAML UIElement

时间:2015-06-10 05:38:53

标签: c# xaml windows-runtime winrt-xaml

我正在将WPF应用程序移植到WinRT中。旧的应用程序有一个部分,它将采取像Image,MediaElement,Xaml页面等;把它当作 UIElement ;接收类将使用 VisualBrush 将其渲染到按钮上。

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

有没有办法让控件接受UIElement并正确呈现?

1 个答案:

答案 0 :(得分:1)

根据您想要达到的目标,您只需在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();
    }
 }