Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Aktuálně: Postihly zákazy tvou profesi? Poptávka po ajťácích prudce roste, využij slevové akce 30% výuky zdarma!
Slevový týden - Březen 30
Avatar
Petr Kasnal
Člen
Avatar
Petr Kasnal:11. ledna 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. ledna 12:47
Avatar
JerryM
Člen
Avatar
JerryM:12. ledna 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. ledna 18:56
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Petr Kasnal
Patrik Valkovič:12. ledna 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. ledna 19:19
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
12. ledna 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. ledna 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. ledna 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.