C# WPF:Load XAML文件,其中包含x:Code元素

C# WPF:Load XAML文件,其中包含x:Code元素,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我需要加载,并使用XAML文件 我已经编写了简单的XAML文件: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-com

我需要加载,并使用XAML文件

我已经编写了简单的XAML文件:

<Window      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="150" d:DesignWidth="300" Title="My Window">
    <x:Code>
        <![CDATA[
            void btnMyButton_Click_1(object sender, RoutedEventArgs e) {
                MessageBox.Show("Hello world", "Message", MessageBoxButton.OK, MessageBoxImage.Information);
            }
        ]]>
    </x:Code>
    <Grid>
        <Button x:Name="btnMyButton" x:FieldModifier="public" Margin="10" Padding="10" 
                FontSize="20" Click="btnMyButton_Click_1">My button</Button>
    </Grid>
</Window>
但我有一个例外:

发生System.Windows.Markup.XamlParseException:'未能创建 '未能从文本'btnMyButton_Click_1'行创建'Click' 编号“16”和行位置“31”

我发现这样的信息:

在x:Code for WPF中声明的代码有几个值得注意的限制: ... 必须在父根元素上提供x:Class指令。

但是如果我在
窗口中添加
x:Class
属性:

x:Class="Lisp_Wpf.MainWindow"
然后我得到一个例外:

'指定的类名'Lisp_Wpf.MainWindow'与实际根实例类型不匹配 “System.Windows.Window”。删除Class指令或通过提供实例 XamlObjectWriterSettings.RootObjectInstance。'行号'1'和行位置'14'

在我的MS Visual Studio项目中,XML文件具有以下属性: 构建操作=无; 复制到输出目录=始终复制; 自定义工具=(空字符串)


我已删除此XAML的部分CS文件。

如果您想在运行时加载XAML,您不能提供XAML文件背后的任何代码。您可能只需为按钮添加常规事件,并在运行时识别控件-只需查看下面的链接并尝试一下

一般提示(我没有重现您的具体问题):


在WPF中,如果Visual Studio中的生成操作设置为“资源”(您可以在xaml文件的属性下找到该设置),也会出现此错误将构建操作设置为“页面”,它将编译

谢谢您的链接。从documentation:>放置在x:code中的代码将被>编译处理为在已经为该XAML>页面创建的partial>类的范围内。因此,您定义的所有代码都必须是该部分类的成员>或变量。如果没有分部类,我将无法使用x:代码:((我想将AutoLISP的函数写入AutoCAD,以便从LISP可以打开WPF窗口。如果没有分部类或code.NET无法连接事件处理程序,这对我没有帮助。
x:Class="Lisp_Wpf.MainWindow"