Статус:
Offline
Реєстрація: 27.11.2008
Повідом.: 87
Реєстрація: 27.11.2008
Повідом.: 87
WPF проблема с ресурсы приложения и переопределением main
Проблема проявилась после определения ресурсов на уровне приложения. Итак дано:
-в файле App.xaml определяем ресурс приложения и удаляем StartupUri:
-в свойствах App.xaml параметр BuildAction меняем на Page. Это необходимо для того чтобы в ручную прописать функцию Main.
-в файле App.xaml.cs прописываем функцию Main. В ручную ее прописываю так как в приложении необходимо авторизироваться, для этого я вызываю окно авторизации и если авторизация прошла успешно то далее уже вызываю основное окно.
LoginWindow - почти пустое окно которое при нажатии на кнопку OK возвращает DialogResult = true.
MainWindow - окно которое использует ресурсы уровня приложения.
В результате LoginWindow работает но mainWin.ShowDialog() выполняется какбуто асинхронно, т.е в дебагере реакции на mainWin.ShowDialog() никакой, т.е. продолжается выполнение функции Main и далее программа естественно завершается.
Возможно проблема сдесь даже и не в ресурсах приложения, т.к. если не вызывать log.ShowDialog тогда mainWin.ShowDialog работает.
Перед этим я не использовал ресурсы приложения и не делал
App app = new App();
app.InitializeComponent();
при этом все работало.
Проблема проявилась после определения ресурсов на уровне приложения. Итак дано:
-в файле App.xaml определяем ресурс приложения и удаляем StartupUri:
Код:
<Application x:Class="ResourcesAppTest.App"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
>
<Application.Resources>
<LinearGradientBrush x:Key="brushGradient"
StartPoint="0,0"
EndPoint="1,1">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0" Color="Black" />
<GradientStop Offset="0.5" Color="Green" />
<GradientStop Offset="1" Color="Gold" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Application.Resources>
</Application>
-в файле App.xaml.cs прописываем функцию Main. В ручную ее прописываю так как в приложении необходимо авторизироваться, для этого я вызываю окно авторизации и если авторизация прошла успешно то далее уже вызываю основное окно.
Код:
namespace ResourcesAppTest
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
[STAThread]
public static void Main()
{
App app = new App();
app.InitializeComponent();
LoginWindow log = new LoginWindow();
log.ShowDialog();
MainWindow mainWin = new MainWindow();
mainWin.ShowDialog();
}
}
}
MainWindow - окно которое использует ресурсы уровня приложения.
В результате LoginWindow работает но mainWin.ShowDialog() выполняется какбуто асинхронно, т.е в дебагере реакции на mainWin.ShowDialog() никакой, т.е. продолжается выполнение функции Main и далее программа естественно завершается.
Возможно проблема сдесь даже и не в ресурсах приложения, т.к. если не вызывать log.ShowDialog тогда mainWin.ShowDialog работает.
Перед этим я не использовал ресурсы приложения и не делал
App app = new App();
app.InitializeComponent();
при этом все работало.