我需要加载并使用 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>
然后我尝试在我的代码中加载这个 XAML:
String curDir = io.Path.GetDirectoryName(typeof(Lisp_Wpf.Commands).Assembly.Location);
String xamlFileName = "MyWindow.xaml";
String fileFullName = io.Path.Combine(curDir, xamlFileName);
DependencyObject depObj = default(DependencyObject);
using (io.FileStream fs = new io.FileStream(fileFullName, io.FileMode.Open)) {
depObj = XamlReader.Load(fs) as DependencyObject;
fs.Close();
}
if (depObj != null && depObj is Window) {
Window win = (Window)depObj;
acad.ShowModalWindow(win);
}
但我得到例外:
System.Windows.Markup.XamlParseException 发生:'无法创建'无法从文本'btnMyButton_Click_1'创建'Click'。' 行号“16”和行位置“31”。
我在这里找到了这样的信息:
在 x:Code for WPF 中声明的代码有几个明显的限制: ... x:Class 指令必须在父根元素上提供。...
但是如果我在我的Window
元素中添加x:Class
属性:
x:Class="Lisp_Wpf.MainWindow"
然后我得到异常:
'指定的类名'Lisp_Wpf.MainWindow'与实际的根实例类型'System.Windows.Window'不匹配。删除 Class 指令或通过 XamlObjectWriterSettings.RootObjectInstance 提供一个实例。行号“1”和行位置“14”。
在我的 MS Visual Studio 项目中,XML 文件具有以下属性: Build Action = None; 复制到输出目录 = 始终复制;自定义工具 =(空字符串);
我删除了这个 XAML 的部分 CS 文件。