ランタイムによる Xaml ファイルのロードで問題が発生しました。参考までに、ユーザーコントロールのコンテンツとしてファイルをロードするコードスニペット:
public UserControl LoadXaml(FileInfo paramFile)
{
FileInfo _XamlFile = paramFile;
UIElement rootElement;
FileStream s = new FileStream(_XamlFile.FullName, FileMode.Open);
rootElement = (UIElement)XamlReader.Load(s);
s.Close();
UserControl uc = new UserControl();
if (rootElement.GetType() == typeof(Window))
{
uc.Content = (rootElement as Window).Content;
}
else
{
uc = rootElement as UserControl;
}
return uc;
}
private void lstPDFDokumente_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var _XamlFile = ((System.Windows.Controls.ListBox)sender).SelectedItem as FileInfo;
if (_XamlFile != null)
{
layoutGrid.Children.Clear();
System.Windows.Controls.UserControl rootElement;
rootElement = XamlController.LoadXaml(_XamlFile);
layoutGrid.Children.Add(rootElement);
}
}
これは、イベントx:Class="..."
が手動で削除されている間は正常に機能します。
私が解決しようとしている問題は次のとおりです。
- ルート要素に がある場合
x:Class="..."
、XamlReader は最初の例外をスローします。 - XamlReader がイベントを含む Control に到達すると、たとえば、
Click
またはTextChanged
、別の例外がスローされます。
私が理解しようとしているのは、XamlFile をロードし、それをメイン ウィンドウのコントロール内に表示し、Name
、Height
などの属性を表示する方法Width
です。数十の Web サイトを読んだだけで、プレビューなどを作成するトピックが見つかりませんでした。
私が試した解決策の 1 つは、Xaml ファイルを XML として読み取り、そのコードを削除することです。問題は、C# で可能なすべてのイベントのリストを取得することでした。
そのコードについて質問がある場合は、お気軽にお問い合わせください :)
こんにちはダニエル