powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Загрузка окна из файла *.xaml
3 сообщений из 3, страница 1 из 1
Загрузка окна из файла *.xaml
    #39085841
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа всем привет.
Экспериментирую с wpf и возникло маленькое недопонимание.
Кому не сложно, подскажите ответ на такой вопрос.
Есть файл test.xaml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Window 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown">
    <Grid>
        <TextBlock FontFamily="Segoe, Segoe UI, Arial" FontWeight="Bold" FontSize="40pt" Foreground="Chartreuse">
      Hello World!
        </TextBlock>
    </Grid>
</Window>


Вот такой код вполне успешно создает объект Window при загрузке файла xaml.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string xamlFile = @"D:\test.xaml";
            DependencyObject obj;
            using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
            {                               
                obj = (DependencyObject)XamlReader.Load(fs);
            }            

            if (obj != null && obj is Window)            
            {
                Window win = (Window)obj;
                win.Show();                
            }



А вот если добавить строку x:Class="WpfApplication1.MainWindow"
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" KeyDown="Window_KeyDown">
    <Grid>
        <TextBlock FontFamily="Segoe, Segoe UI, Arial" FontWeight="Bold" FontSize="40pt" Foreground="Chartreuse">
      Hello World!
        </TextBlock>
    </Grid>
</Window>


Соответственно есть в проекте класс (пустой, просто как образец) WpfApplication1.MainWindow, наследник от Window

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
namespace WpfApplication1
{
    public partial class MainWindow : Window
    {        

        public MainWindow()
        {
            
        }

    }
}


И немного модернизировать код отвечающий за загрузку объекта из файла:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            string xamlFile = @"D:\test.xaml";
            DependencyObject obj;

            using (FileStream fs = new FileStream(xamlFile, FileMode.Open))
            {                               
                obj = (DependencyObject)XamlReader.Load(fs);
            }            

            if (obj != null && obj is WpfApplication1.MainWindow)            
            {
                WpfApplication1.MainWindow win = (WpfApplication1.MainWindow)obj;
                win.Show();                
            }


То такой финт уже не работает.
Вот и хотелось бы понять, возможно ли реализовать такое (или нечто подобное) с использованием C# и технологии WPF?
...
Рейтинг: 0 / 0
Загрузка окна из файла *.xaml
    #39085846
Фотография П.С.М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл добавить текст ошибки, после добавления x:Class="WpfApplication1.MainWindow":
Visual StudioУдалите директиву Class или предоставьте экземпляр с помощью свойства XamlObjectWriterSettings.RootObjectInstance."
Т.е. предлагается предоставить экземпляр с помощью XamlObjectWriterSettings.RootObjectInstance. А как это делается? Есть какой нибудь пример такого "предоставления экземпляра"?
...
Рейтинг: 0 / 0
Загрузка окна из файла *.xaml
    #39085851
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Загрузка окна из файла *.xaml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]