我正在将WPF应用程序移植到WinRT中。旧的应用程序有一个部分,它将采取像Image,MediaElement,Xaml页面等;把它当作 UIElement ;接收类将使用 VisualBrush 将其渲染到按钮上。
不幸的是,WinRT没有VisualBrush。我已尝试将内容设置为UIElement等。我还阅读了 RenderTargetBitmap ,但我认为它不会起作用,因为我还有视频内容。
有没有办法让控件接受UIElement并正确呈现?
答案 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();
}
}