我需要加载,并使用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'中创建'点击'。'线 数字'16'和行位置'31'。
我找到了这样的信息here:
在x中声明的代码:WPF的代码有几个明显的限制: ... x:必须在父根元素上提供类指令。 ...
但如果我在Window
元素中添加x:Class
属性:
x:Class="Lisp_Wpf.MainWindow"
然后我得到例外:
'指定的类名'Lisp_Wpf.MainWindow'与实际的根实例类型不匹配 'System.Windows.Window'。删除Class指令或通过提供实例 XamlObjectWriterSettings.RootObjectInstance“。行号“1”和行位置“14”。
在我的MS Visual Studio项目中,XML文件具有以下属性: 构建动作=无; 复制到输出目录=始终复制; 自定义工具=(空字符串);
我删除了此XAML的部分CS文件。
答案 0 :(得分:3)
如果你想在运行时加载xaml你就不能在你的XAML文件后面添加任何代码。可能你只需附加按钮点击的常规事件并在运行时识别控件 - 只需查看下面的链接并试一试即可
答案 1 :(得分:2)
一般提示(我没有重现您的具体问题):
在WPF中,如果Visual Studio中的构建操作设置为&#34;资源&#34; (您可以在xaml文件的属性下找到该设置)。 将构建操作设置为&#34; Page&#34;它会编译!