Uno - 在运行时动态加载布局
Uno - Load layout dynamically during runtime
有没有办法在运行时动态加载屏幕布局?
我希望能够从配置中加载屏幕布局,而无需重新编译整个应用程序。
您可以使用 XamlReader
在运行时动态加载 XAML 布局。一个简单的例子:
private void Add_Ellipse(object sender, RoutedEventArgs e)
{
var xaml = "<Ellipse Name=\"EllipseAdded\" Width=\"300.5\" Height=\"200\" Fill =\"Red\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"/>";
var ellipse = Windows.UI.Xaml.Markup.XamlReader.Load(xaml) as UIElement;
var host = (sender as FrameworkElement).Parent as Panel;
host.Children.Add(ellipse);
}
请注意,如果您以这种方式加载所有布局,您可能会注意到页面加载时间,因为 XAML 需要被解析,并且您还错过了通常在 XAML 在编译时已知,但它为您提供了所需的灵活性。
有没有办法在运行时动态加载屏幕布局?
我希望能够从配置中加载屏幕布局,而无需重新编译整个应用程序。
您可以使用 XamlReader
在运行时动态加载 XAML 布局。一个简单的例子:
private void Add_Ellipse(object sender, RoutedEventArgs e)
{
var xaml = "<Ellipse Name=\"EllipseAdded\" Width=\"300.5\" Height=\"200\" Fill =\"Red\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"/>";
var ellipse = Windows.UI.Xaml.Markup.XamlReader.Load(xaml) as UIElement;
var host = (sender as FrameworkElement).Parent as Panel;
host.Children.Add(ellipse);
}
请注意,如果您以这种方式加载所有布局,您可能会注意到页面加载时间,因为 XAML 需要被解析,并且您还错过了通常在 XAML 在编译时已知,但它为您提供了所需的灵活性。