Mire szolgál az InitializeComponent(); függyvény?
2018-08-14T21:46:21+02:00
2018-08-14T22:30:33+02:00
2022-08-11T05:40:29+02:00
UltimateGold
Annyi lenne a kérdésem, hogy mire szolgál a c# WPF fileokban az InitializeComponent();
Mutasd a teljes hozzászólást!
Na jó, kicsit komolyabban.

Fordítsd le a projectet és keress rá az InitializeComponent szóra.

A te általad írt XXX.CS-en kívül találsz majd egy a fordítási process által generált XXX.G.CS filet is, ahol megtalálod forrásban a hívott InitializeComponent() függvényt.

Ezt elemezd, ismerkedj vele és gondolkozz.

Piciny gondolatébresztőnek:
- az XAML file tartalma (kulcsszavai, tartalma) megegyezik egy C# forrásból létrehozott form tartalom elemeivel. 
  (lehet forrásban is runtime létrehozni WPF komponenseket)
- van olyan megoldás is, hogy akár runtime alatt az XAML forrásokból hozassunk létre osztálypéldányokat
- Ay EXE/DLL-ben eltárolódik az XAML [*] és form létrehozásakor abból töltődik fel a form tartalma (lásd előző pont) vagyis az XAML-ből az ott megadott osztályhierarchai az ott megadott tartalommal létrejön (debugolható)

[*] na jó a valóságban helytakarékosság és sebesség okán az XAML-ből BAML bináris reprezentánst tárol a resourcek között és ezt tölti be.

Példának: nálam ilyen kód keletkezett:

public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Uri resourceLocater = new System.Uri("/EMELCommonWPFClassLibrary;component/commonmainwindow.xaml", System.UriKind.Relative); System.Windows.Application.LoadComponent(this, resourceLocater); }
resourceLocater: a BAML resource címe, ahogy az XAML-t eltárolta az EXE-be
LoadComponent: az XAML-ből (ami ugye BAML reprezentáns) felépíti runtime a this formhoz tartozva az osztálypéldányokat.
Mutasd a teljes hozzászólást!

  • Hali!

    … mire szolgál a c# WPF fileokban az InitializeComponent();

    Lásd a másik témádat irányadónak (nem a tartalom, hanem a módszer miatt). 

    Mutasd a teljes hozzászólást!
  • InitializeComponent() ---> Initialize Component
    Mutasd a teljes hozzászólást!
  • Na jó, kicsit komolyabban.

    Fordítsd le a projectet és keress rá az InitializeComponent szóra.

    A te általad írt XXX.CS-en kívül találsz majd egy a fordítási process által generált XXX.G.CS filet is, ahol megtalálod forrásban a hívott InitializeComponent() függvényt.

    Ezt elemezd, ismerkedj vele és gondolkozz.

    Piciny gondolatébresztőnek:
    - az XAML file tartalma (kulcsszavai, tartalma) megegyezik egy C# forrásból létrehozott form tartalom elemeivel. 
      (lehet forrásban is runtime létrehozni WPF komponenseket)
    - van olyan megoldás is, hogy akár runtime alatt az XAML forrásokból hozassunk létre osztálypéldányokat
    - Ay EXE/DLL-ben eltárolódik az XAML [*] és form létrehozásakor abból töltődik fel a form tartalma (lásd előző pont) vagyis az XAML-ből az ott megadott osztályhierarchai az ott megadott tartalommal létrejön (debugolható)

    [*] na jó a valóságban helytakarékosság és sebesség okán az XAML-ből BAML bináris reprezentánst tárol a resourcek között és ezt tölti be.

    Példának: nálam ilyen kód keletkezett:

    public void InitializeComponent() { if (_contentLoaded) { return; } _contentLoaded = true; System.Uri resourceLocater = new System.Uri("/EMELCommonWPFClassLibrary;component/commonmainwindow.xaml", System.UriKind.Relative); System.Windows.Application.LoadComponent(this, resourceLocater); }
    resourceLocater: a BAML resource címe, ahogy az XAML-t eltárolta az EXE-be
    LoadComponent: az XAML-ből (ami ugye BAML reprezentáns) felépíti runtime a this formhoz tartozva az osztálypéldányokat.
    Mutasd a teljes hozzászólást!
abcd