WPF InitializeComponent () выдает ошибку CS0103 при добавлении изображения с помощью Buid Action SplashScreen - PullRequest
2 голосов
/ 19 марта 2019

У меня возникла какая-то странная проблема, которую я не могу объяснить себе (следовательно, исправлю): В моем приложении C # у меня есть 3 WPF Windows, которые будут появляться при вызове. Конечно, все эти окна WPF имеют метод InitializeComponent().

Я также создал SplashWindow пользовательский класс, в котором я определяю универсальное окно SplashScreen. Требуя объект Uri в качестве входных данных, появится всплывающее окно с изображением, относящимся к этому Uri, а затем закроется, когда вызывается метод закрытия. Изображение, которое я использую для заставки, загружается в мое решение в папку с именем Resources , а для Build Action установлено значение SplashScreen . Вот код:

    class SplashWindow
{
    private Form form = null;

    public SplashWindow(Uri uri)
    {
        form = new Form();

        StreamResourceInfo info = System.Windows.Application.GetResourceStream(uri);

        Image splashImage = Image.FromStream(info.Stream);

        // Get image dimensions
        form.Width = splashImage.Width;
        form.Height = splashImage.Height;            

        form.BackgroundImage = splashImage;

        form.BackgroundImageLayout = ImageLayout.Stretch;

        form.StartPosition = FormStartPosition.CenterScreen;
        form.FormBorderStyle = FormBorderStyle.None;
        form.TopMost = true;

        form.Show();
    }

    internal void CloseSplash()
    {
        form.Close();
    }
}

И я вызываю этот объект заставки один раз в моем коде примерно так:

// Start async to get user
Task<User> getUser = GitHubConnection.LoginAsync(tok);

// Pop up splash screen in the meantime
SplashWindow splash = new SplashWindow(validationUri);

// Await for user
User user = await getUser;

// Close splash screen
splash.CloseSplash();

И это прекрасно работает!

Проблема, с которой я сталкиваюсь , заключается в том, что если я попытаюсь добавить другое изображение в свое решение и установить для параметра «Действия при построении» значение SplashScreen для недавно обновленного изображения, то все методы InitializeComponent() во ВСЕХ моих Окна WPF начинают выдавать ошибку CS0103: The name InitializeComponent does not exist in current context. Так что я не могу использовать более одного заставки, но для меня это не имеет никакого смысла.

Есть идеи, почему это происходит? Что мне не хватает?

...