仅通过XamlReader加载Xaml进行预览

时间:2013-03-26 07:48:02

标签: xaml root xmlreader xamlparseexception xamlreader

刚刚遇到运行时加载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时,对于示例ClickTextChanged,它会抛出另一个异常。
  3. 我试图弄清楚如何加载XamlFile,在主窗口的Control中显示它,并显示一些属性,如NameHeight,{{1} } 等等。 只是阅读了几十个网站,但从未找到过关于进行预览或类似事情的话题。

    我尝试的其中一个解决方案是将Xaml文件作为XML读取并删除该代码。 问题是获得C#中所有可能事件的列表。

    如果该代码存在一些问题,请随时询问:)

    问候 丹尼尔

0 个答案:

没有答案