1

ランタイムによる 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="..."が手動で削除されている間は正常に機能します。

私が解決しようとしている問題は次のとおりです。

  1. ルート要素に がある場合x:Class="..."、XamlReader は最初の例外をスローします。
  2. XamlReader がイベントを含む Control に到達すると、たとえば、ClickまたはTextChanged、別の例外がスローされます。

私が理解しようとしているのは、XamlFile をロードし、それをメイン ウィンドウのコントロール内に表示し、NameHeightなどの属性を表示する方法Widthです。数十の Web サイトを読んだだけで、プレビューなどを作成するトピックが見つかりませんでした。

私が試した解決策の 1 つは、Xaml ファイルを XML として読み取り、そのコードを削除することです。問題は、C# で可能なすべてのイベントのリストを取得することでした。

そのコードについて質問がある場合は、お気軽にお問い合わせください :)

こんにちはダニエル

4

0 に答える 0