Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:11.1.2021 12:47

Zdravím, marně se snažím googlit a najít řešení jak v .net core WPF s DI otevřít nové okno. Používám MVVM a ve svém viewmodel mám tlačítko, které má otevřít nové okno. Udělal jsem to tak, že jsem si okno registroval v DI a předal v parametru konstruktoru. Nevím jestli je tohle zcela správně. Nicméně okno pak otevřu, ale když ho zavřu a znovu otevřu, tak to zahlásí:

Cannot set Visibility or call Show, ShowDialog, or WindowInteropHelper.EnsureHandle after a Window has closed.'

Tomu rozumím a zkrátka nevím jak tohle přesně udělat...

Předem díky moc za rady :)

Zkusil jsem: Hledat na googlu i testovat kód.

Chci docílit: Správné funkčnosti k otevírání oknům.

 
Odpovědět
11.1.2021 12:47
Avatar
JerryM
Člen
Avatar
JerryM:12.1.2021 18:56

nove .NET 5 je příliš nové .. zkus MSDN forum - to v angličtině, protože to české ti asi moc nepomuže
https://social.msdn.microsoft.com/…s/en-US/home

 
Nahoru Odpovědět
12.1.2021 18:56
Avatar
Odpovídá na Petr Kasnal
Patrik Valkovič:12.1.2021 19:18

Ahoj. Nemůžeš si do DI předat okno, ale pouze factory.

class WindowFactory{
    private readonly SomeClass DIParameter;
    /* další DI parameters */
    public WindowFactory(SomeClass DIParameter /* DI parametry */){
        this.DIParameter = DIParameter;
        /* DI parametry */
    }
    public void open(){
        return new SpecialWindow(DIParameter /* DI parametry */);
    }
}

Tuto factory přidáš do DI a když budeš chtít vytvořit okno, tak zavoláš metodu open. Tím se ti při každém kliknutí vytvoří okno nové, což je přesně to, co chceš. Možná má .NET nějakou metodu, která factory vytvoří přímo, nebo si ji můžeš napsat sám.

Editováno 12.1.2021 19:19
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
12.1.2021 19:18
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Petr Kasnal
Člen
Avatar
Odpovídá na Patrik Valkovič
Petr Kasnal:14.1.2021 10:50

Super tohle jsem potřeboval vědět. Myslel jsem si to, ale nebyl jsem si jistý. Tak strašně moc děkuji :)

 
Nahoru Odpovědět
14.1.2021 10:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.