Norbert M.

Norbert M. Nobody's perfect.
Call me Nobody ;)

Temat: MDI w WPF

Witam. Czy (i ew. czemu) Microsoft wyciął technologię MDI w aplikacjach WPF?
Czy stosujecie coś w zamian?

konto usunięte

Temat: MDI w WPF

Czy stosujecie coś w zamian?
Nie jestem do końca od okienek, ale można do tego webowo podejść czyli wrzucasz Frame i w tym frame jakiś Page. W momencie, kiedy użytkownik chce zmienić dokument, na którym pracuje - czyli obiekt z MODELU - to podmieniasz DataContext na aktualnie wyświetlanym Page. Samo Page jako VIEW pozostaje bez zmian.

Oczywiście trzeba od początku stosować się do wariacji MVC którą M$ zastosował w WPF czyli Model-View-ViewModel. Całą prezentację na Page należy powiązać poprzez Bindingi do odpowiedniej klasy z modelu.

Natomiast ogólnie widzę, że przerabiasz WPF i dobrze:) Na wstępie możesz zapoznać się z takim dokumentem:
WPF for those who know Windows Forms
czemu Microsoft wyciął technologię MDI w aplikacjach WPF?
Ważne jest, abyś nie traktował WPFa jako tylko następcy WinForm. Owszem, WPF rysuje kontrolki poprzez milcore/DirectX z pominięciem user32.dll, ale dla nas programistów najważniejsze jest to, że zmieniła się koncepcja tworzenia UI. W WinFormach wszystko robiło się imperatywnie czyli w kodzie CS (my lub VS - tak czy inaczej za tym stał kompilowalny kod). W WPFie my deklarujemy jak ma wyglądać UI i silnik WPFa (PresentationHost.exe) nam go renderuje w runtimie! Filozofia jest taka, abyśmy zadeklarowali jak ma widok wyglądać w XAMLu i przy użyciu Bindingów połączyli go z modelem. Idealnie kodu C# w warstwie prezentacji powinno być bardzo mało, najlepiej wyłącznie w miejscach do tego wyznaczonych (Convertery, Validatory, INotifyPropertyChanged). A XAML najlepiej produkować w Expression Blendzie.

konto usunięte

Temat: MDI w WPF

Nie ma prostego rozwiazania niestety.

Osobiscie tworze UserControl, ktory wyglada "prawie" jak okno. Kazda kontrolka odpowiada jednemu dokumentowi. Te "okna" potomne tworze dynamicznie i dolaczam do kolekcji "Children" obiektu Canvas.
Przeciaganie kontrolki po obiekcie Canvas to juz przedszkole. Obsluga dwukliku w celu maksymalizacji - tez da sie szybko zrobic (wiazesz rozmiar kontrolki z rozmiarem Canvas'u, dzieki temu zmiana rozmiaru okna-rodzica jest obslugiwana automatycnzie).
Menu kontekstowe? Wiazesz menu do kolekcji Children (czy jakos tak) obiektu Canvas (z malym ValueConverterem, zeby sie ladnie wyswietlalo).

Et voila! MDI gotowe;)

Następna dyskusja:

Aplikacja MDI




Wyślij zaproszenie do