Wpf, létrehozva a treeview csomópontokat

A TreeView vezérlőket gyakran nagy mennyiségű adat tárolására használják. Ezt azzal magyarázza, hogy a TreeView összecsukható-bővíthető struktúrával rendelkezik. Még akkor is, ha a felhasználó a TreeView felülről lefelé gördül, a látható információ nem feltétlenül látható. A nem látható információ általában átugrásra kerül a TreeView vezérlésben, csökkentve a felső (és a kitöltés idejét). Még jobb, ha megnyitja a TreeViewItem elemet, egy kibővített esemény aktiválódik. és amikor bezárt, az Összecsukott esemény. Ez a pont nagyon hasznos a hiányzó csomópontok hozzáadásához vagy azok eltávolításához, amelyekre már nincs szükség. Ezt a megközelítést a csomópontok "just-in-time" létrehozásának nevezik.

Habár a TreeView vezérlő kitölthető a merevlemez-meghajtók struktúrájával, ez a folyamat depressziósan lassú. Sokkal jobb, ha először megjelenik egy részlegesen összecsukott nézet, és a felhasználót megkérik, hogy függetlenül érjen el bizonyos könyvtárakat. Amikor minden egyes csomópontot kibővít, a megfelelő alkönyvtárak hozzáadódnak a fához, és ez a folyamat szinte azonnal megy végbe:

Wpf, létrehozva a treeview csomópontokat

Az alkalmazás a TreeView ellenőrzés azzal a képességgel, hogy gyorsan létre egységeket a kijelző mappák a semmi új merevlemezre. Az első lépés az, hogy adjunk egy TreeView listát vezet az első boot képernyő. Kezdetben csomópont minden egyes lemez kijelzett minimalizálható. A meghajtó betűjele jelenik meg a fejléc és driveinfot objektum tárolódik TreeViewItem.Tag tulajdonság, hogy egyszerűsítse a keresési alkönyvtárakat a jövőben anélkül, hogy újra az objektumot. (Ez növeli a felső a kérelmek társított memória, de egyúttal csökkenti a biztonsági ellenőrzések fájlok eléréséhez. A teljes hatás elhanyagolható, de kissé javítja a teljesítményt és egyszerűsíti a kódot.) Itt van a kód, amelyben a TreeView tele van a felsorolt ​​meghajtók a class System.IO.DriveInfo:

Ez a kód minden lemez csomópontjához hozzáad egy helyőrzőt (csillagot). Ez a mutató nem jelenik meg, mert a csomópont először összeomlott állapotban van. Ha csomópontot bővít, törölheti ezt az indexet, és hozzáadhatja az alkönyvtárak listáját a helyére.

A csomópontok online létrehozásának végrehajtásához a TreeViewItem.Expanded eseményt kell kezelnie. Mivel ez az esemény támogatja a buborékszaporítást, az eseménykezelő közvetlenül a TreeView elemhez csatlakoztatható, így kezeli a bennük lévő bármely TreeViewItem kibővített eseményét:

Jelenleg a fenti kód frissül minden elem kibontásakor. Ha szeretné, akkor győződjön meg róla, hogy a frissítés csak akkor történik meg, ha az elemet először bővíti, és megtalálja a helyjelzőt. Ez csökkenti az alkalmazás által elvégzendő feladatok mennyiségét, de növeli az elavult adatok megjelenítésének valószínűségét is.

Azt is megteheti, hogy a frissítés végeztünk minden egyes elemet, feldolgozásával események ViewItem.Selected, vagy használatát komponensek, mint System.IO.FileSystemWatcher várja a bejelentést az operációs rendszer hozzáadásával, törlését vagy átnevezését mappákat. A FileSystemWatcher összetevő az egyetlen módja annak, hogy a könyvtárfa frissítésre kerüljön azonnal, amikor a változás bekövetkezik, de tele van a legnagyobb fejlettséggel.

Kombináljuk a TreeView-ot a vezérlő sablonok hatékony funkcióival. sok mindent elérhet. Például létrehozhat olyan szabályokat, amelyek gyökeresen különböznek a megjelenésben és a viselkedésben, egyszerűen a TreeView és a TreeViewItem vezérlő sablonjainak helyettesítésével.

Kapcsolódó cikkek