Загрузка Xaml через 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="..."
удаляются вручную.
Проблемы, которые я пытаюсь решить:
- Если есть
x:Class="..."
в корневом элементе XamlReader выдает первое исключение. - Когда XamlReader достигает элемента управления, который содержит событие, например
Click
или жеTextChanged
Бросает еще одно исключение.
То, что я пытаюсь выяснить, это как загрузить XamlFile, показать его внутри элемента управления в главном окне и показать некоторые атрибуты, такие как Name
,Height
,Width
и так далее. Просто прочитайте десятки веб-сайтов, но так и не нашли тему для предварительного просмотра или тому подобное.
Одним из решений, которое я попробовал, является чтение файла Xaml в формате XML и удаление этого кода. Проблема заключалась в том, чтобы получить список всех возможных событий в C#.
Если есть какие-то вопросы к этому Кодексу, не стесняйтесь спрашивать:)
Привет Даниил