要呈现 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();
}
}
我正在将 WPF 应用程序移植到 WinRT 中。旧应用程序有一部分需要图像、MediaElement、Xaml 页面等;将其转换为 UIElement;然后接收者 class 将使用 VisualBrush 将其呈现到按钮上。
遗憾的是 WinRT 没有 VisualBrush。我已经尝试将内容设置为 UIElement 等。我还阅读了有关 RenderTargetBitmap 的内容,但是我认为它不会起作用,因为我也有视频内容。
有什么方法可以制作接受 UIElement 并正确呈现它的控件吗?
根据您想要实现的目标,您可以在 Button.Content 属性.
中设置 UIElementButton.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();
}
}