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」。
ここでそのような情報を見つけました:
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 ファイルに次のプロパティがあります。出力ディレクトリにコピー = 常にコピー。カスタム ツール = (空の文字列);
この XAML の部分的な CS ファイルを削除しました。