WPF Window inheritance / XAML
2014-03-27T19:15:52+01:00
2014-03-27T21:05:33+01:00
2022-08-17T21:05:37+02:00
*deleted_29487814
Ezen és ezen a megoldáson felbuzdulva megpróbáltam létező window-ból leszármaztatni egy új window-t.

Mint kiderült, a leírtak igazak, de van egy "apró" megkötés: a base window nem tartalmazhat XAML-t. Vagyis ez a megoldás nagyon félmegoldás

Sajnálatos, pedig ez a módszer a szöveges DFM-be és a forrásba editálással (osztálynév csere) már szépen ment Delphi/C++Builderben is.

Ha nem megy, hát nem megy.

Szóval, mi a legjobb megoldás egy olyan esetre, ha van egy WPF Window-om, ami szépen fel van építve XAML-ből és kódból és ezt a window-t mintegy sémát kell használnom több egyedi esetre.
Szerencsére csak hozzátenni kell (ami más azt "láthatatlanná" tudom tenni a base window logikájában egy príma kis ViewModel-es 'beállítgatással'), az ablakomhoz a közepén egy TabPage-re kellene tenni dolgokat, más-más ablaknál más-más tartalmat és annak logikáját.

... és természetesen a Tab-ok tartalma (pontosabban a hozzájuk kötött ViewModel-ek tartalma) alapján dolgozik a Base Window a gombjainak nyomogatására.

A Base Window-on dinamikusan tegyek Page-ket a lapokra?
Kötözgessem ada-vissza (Page/Window) az eseményeket?

Elég nagy pókhálónak tűnik, van jobb elképzelés vagy tapasztalat?
Mutasd a teljes hozzászólást!
Hát egyelőre ott tartok, ez működik is és nem is "csúnya" megoldás, hogy a Tab-okra egy-egy Frame-et tettem, ennek a tartalma (Page) szépen betölthető és a hívó által szépen meghatározható a Base Window-nak adott paraméterek alapján.

A Page ugye szépen szerkeszthető, kevesebb vele a gond és nagyobb a szabadsága (vannak jó összetett tartalmak is), mint usercontrol-nak.

Pillanatnyilag a Page-k és a Base Window összekötögetései lesz a kérdéses, de remélem ez nem bonyolódik el. Elvileg úgy gondolom, hogy a Base Window és a Page-ek között megosztott ViewModel-en keresztüli kommunikáció egyszerű maradhat.

De ha valaki használ ilyesmit és van gyakorlati tapasztalata, örömmel várom az infókat.
Mutasd a teljes hozzászólást!

  • esetleg:
    kell egy mainwindow, szvsz nem szükséges ebben az esetben az öröklés
    Ez valósítson meg egy interface-t amin keresztűl majd a tabitemek kommunikálnak
    Ebben legyen egy tabcontrol, és ebben a tabcontrolban lesznek a tabitemek

    minden, amit eddig származtatni akartál, az mostantól egy usercontrol lesz
    példányosítsd a usercontrolt, majd minden egyes tabitem content-jébe tedd be
    injektáld be interface-ként a mainwindow-t
    Mutasd a teljes hozzászólást!
  • Hát egyelőre ott tartok, ez működik is és nem is "csúnya" megoldás, hogy a Tab-okra egy-egy Frame-et tettem, ennek a tartalma (Page) szépen betölthető és a hívó által szépen meghatározható a Base Window-nak adott paraméterek alapján.

    A Page ugye szépen szerkeszthető, kevesebb vele a gond és nagyobb a szabadsága (vannak jó összetett tartalmak is), mint usercontrol-nak.

    Pillanatnyilag a Page-k és a Base Window összekötögetései lesz a kérdéses, de remélem ez nem bonyolódik el. Elvileg úgy gondolom, hogy a Base Window és a Page-ek között megosztott ViewModel-en keresztüli kommunikáció egyszerű maradhat.

    De ha valaki használ ilyesmit és van gyakorlati tapasztalata, örömmel várom az infókat.
    Mutasd a teljes hozzászólást!
abcd