扩展请参考

https://www.cnblogs.com/dalgleish/p/18972924

NonCompiledXaml.axaml代码

<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="AvaloniaUI.NonCompiledXaml"
Title="NonCompiledXaml">
<ScrollViewer>
<StackPanel Name="mainPanel" Background="#f0f0f0">
<TextBlock Text="" FontFamily="{StaticResource IconFont}" FontSize="20" Margin="5" HorizontalAlignment="Center"/>
<Button Content="加载动态内容" Click="Button_Click" Margin="0,0,0,5"/>
</StackPanel>
</ScrollViewer>
</Window>

NonCompiledXaml.axaml.cs代码,其中Window1是一个简单的Window窗口。新扩展已经支持多个cs文件编译,并且支持AvaloniaUseCompiledBindingsByDefault = true

using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Platform;
using Shares.Avalonia;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks; namespace AvaloniaUI; public partial class NonCompiledXaml : Window
{
public NonCompiledXaml()
{
InitializeComponent();
}
private async void Button_Click(object? sender, RoutedEventArgs e)
{
Control control = await this.RunResourceAsync("Window1");
mainPanel.Children.Add(control);
var xaml = @"
<UserControl xmlns='https://github.com/avaloniaui'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
x:Class='SampleView'>
<StackPanel Margin='20'>
<TextBlock Text='{Binding Message}' FontSize='24' Foreground='Blue'/>
</StackPanel>
</UserControl>
"; var code = @"
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; public class SampleView : UserControl
{
public SampleView()
{
this.DataContext = new ViewModel();
} public class ViewModel : ObservableObject
{
private string message = ""Hello from dynamic SampleView!""; public string Message
{
get => message;
set => SetProperty(ref message, value);
}
}
}
";
Control xamlControl = await this.RunXamlAsync(xaml, code);
mainPanel.Children.Add(xamlControl); var xaml1 = @"<Window xmlns=""https://github.com/avaloniaui""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
xmlns:d=""http://schemas.microsoft.com/expression/blend/2008""
xmlns:mc=""http://schemas.openxmlformats.org/markup-compatibility/2006""
xmlns:local=""using:AvaloniaUI""
mc:Ignorable=""d"" d:DesignWidth=""800"" d:DesignHeight=""450""
x:Class=""AvaloniaUI.Window2""
Title=""Window2"">
<StackPanel Margin=""20"">
<TextBlock x:DataType=""local:ViewModel"" Text=""{Binding Message}"" FontSize=""24"" Foreground=""Blue""/>
</StackPanel>
</Window>
";
var code1 = @"using Avalonia;
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel; namespace AvaloniaUI; public partial class Window2 : Window
{
public Window2()
{
this.DataContext = new ViewModel();
}
}
public class ViewModel : ObservableObject
{
private string message = ""Hello from dynamic Window2View!""; public string Message
{
get => message;
set => SetProperty(ref message, value);
}
}
";
Control xamlControl1 = await this.RunXamlAsync(xaml1, code1,"Window2");
mainPanel.Children.Add(xamlControl1);
}
}

运行效果

C# Avalonia动态加载xaml和cs实例的更多相关文章

  1. [WPF学习笔记]动态加载XAML

    好久没写Blogs了,现在在看[WPF编程宝典],决定开始重新写博客,和大家一起分享技术. 在编程时我们常希望界面是动态的,可以随时变换而不需要重新编译自己的代码. 以下是动态加载XAML的一个事例代 ...

  2. XamlReader 动态加载XAML

    原文:XamlReader 动态加载XAML XAML: <Grid xmlns:x="http://schemas.microsoft.com/client/2006" x ...

  3. WPF中动态加载XAML中的控件

    原文:WPF中动态加载XAML中的控件 using System; using System.Collections.Generic; using System.Linq; using System. ...

  4. 三种动态加载js的jquery实例代码另附去除js方法

    !-- 这里为你提供了三种动态加载js的jquery实例代码哦,由于jquery是为用户提供方便的,所以利用jquery动态加载文件只要一句话$.getscript("test.js&quo ...

  5. js实现动态加载脚本的方法实例汇总

      本文实例讲述了js实现动态加载脚本的方法.分享给大家供大家参考,具体如下: 最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查 ...

  6. Echarts动态加载饼状图实例(二)

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div class="ui-contai ...

  7. ECharts动态加载堆叠柱状图的实例

    一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...

  8. 动态加载XAML

    string FadeInStoryBoard = "<StoryBoard ... />"; StoryBoard storyBoard = XamlReader.L ...

  9. 用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机

    原文:用MVVM模式开发中遇到的零散问题总结(5)--将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打 ...

  10. 【Java接口实现动态加载不同的类】

    public interface Person {       public double calcuMonthlySalary(double sal, int type);    }   publi ...

随机推荐

  1. 🎀dubbo 2.7.2 启动报错【Unsupported generic type false】排查

    1.问题现象 dubbo服务启动时抛出异常Unsupported generic type false,但不影响服务正常发布. Caused by: java.lang.IllegalArgument ...

  2. github项目收集

    web模块 Nginx 监控模块vts: https://github.com/vozlt/nginx-module-vts

  3. php uninx时间戳转datetime对象,获取n秒前的dateime问题

    当时在网上搜了下这个问题,大多方法都是定义一个函数,在里面处理,后来网官网文档看到可以这么用,记录下. php时间戳转datetime对象 var_dump(new \Datetime('@'.tim ...

  4. DIY钢铁侠方舟反应堆第二期—第一代电路板展示

    经历一个周的时间,终于把方舟反应堆的电路画了出来,简单画了一个USB口加LED灯的电路,先简单测试一下 原理图展示 PCB展示 实物如下 这里出了一点意外,LED被发错了,本来计划的是蓝灯,但是发来的 ...

  5. EFCore 高并发

    EFCore 高并发 有常见的并发场景?如果我们使用EFCore常用的解决方法会出现哪些问题?对应不同的并发场景我们应该选择哪些的处理方式? 参照:事务的四种隔离级别详解_事务隔离级别-CSDN博客 ...

  6. Python3_数据类型和变量

    Python3_数据类型和变量 一.数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 在 ...

  7. sql注入与防止sql注入

    数据库中的数据 sql代码 package com.zjw.jdbc2; import java.sql.Connection; import java.sql.DriverManager; impo ...

  8. xshell远程连接出现WARNING! The remote SSH server rejected X11 forwarding request.

    解决办法: 编辑sshd配置文件 vi /etc/ssh/sshd_config 设置 X11Forwarding yes UserLogin no //原本的注释解开 yum install -y ...

  9. 用 DevEco Studio 模拟器这些能力 没真机也能高效调测鸿蒙原生应用

    随着鸿蒙生态的快速发展,越来越多的开发者投身于鸿蒙原生应用的开发中.然而,在实际开发中,真机设备短缺.调测场景复杂等问题常困扰着开发者.为解决这些问题,华为在DevEco Studio上为开发者提供了 ...

  10. SQL 日常练习 (二十)

    也只是尽快搬完这快一个月 sql 的砖, 准备要来整新学习模块了, 因此, 正好趁着五一, 加波速. 也会一直坚守和追求, 学无止境, 气有浩然. 每次都会说, 这是一种精神的传承,而我想的是, 不仅 ...