Wstążka (Ribbon)
Jakiś czas temu Micorosoft opublikował biblioteki ze wstążką znane z Office 2007 pozwalające na użycie w aplikacjach WPF. Okazuje się, że uzyskanie tych bibliotek wymaga jednak trochę zachodu:
- Trzeba się udać na stronę ?Office UI Licensing? i skorzystać z linku ?License the Office UI?, następnie trzeba się zalogować przy pomocy live Id i zaakceptować licencję. Przyznam się szczerze, że nawet nie wiem na co się zgodziłem 😛 Na końcu tego kroku będzie można pobrać WPFRibbonCTP ? bibliotekę ze wstążką dla WPF.
- Najlepiej też pobrać Hands-On-Lab:What?s Coming in WPF: Datagrid, Ribbon, and VSM, który pokazuje jak stworzyć wstążkę. W ćwiczeniu 2 zawarta jest świetna aplikacja demonstracyjna:
Podłączamy Prism
O Prism opowiadał Szymon Kobalczyk na 12. spotkaniu PG .NET ? jego wystąpienie zainspirowało mnie i zachęciło do eksperymentów. Postanowiłem dodać region pozwalający na dodawanie zakładek do wstążki przez moduły. Po bliższym obejrzeniu kodu źródłowego Prisma okazało się, że trzeba tylko stworzyć własny RegionAdapter:
public class RibbonControlRegionAdapter : RegionAdapterBase<Ribbon> { private Ribbon m_regionTarget; protected override void Adapt(IRegion region, Ribbon regionTarget) { m_regionTarget = regionTarget; regionTarget.Tabs.Clear(); region.ActiveViews.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(OnActiveViewsChanged); foreach ( RibbonTab v in region.ActiveViews) regionTarget.Tabs.Add(v); } private void OnActiveViewsChanged(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Add: foreach (RibbonTab v in e.NewItems) m_regionTarget.Tabs.Add(v); break; case NotifyCollectionChangedAction.Remove: foreach (RibbonTab v in e.NewItems) m_regionTarget.Tabs.Remove(v); break; } } protected override IRegion CreateRegion() { return new AllActiveRegion(); } }
Tak wygląda shell przed podłączeniem modułu ( wiem ? brzydki, ale nie o to chodzi:P ):
A tak po włączeniu modułu Module1, który używa regionu we wstążce:
Rozwój
W tym przykładzie adapter jest tak zbudowany, że pozwala tylko na dodawanie całych zakładek. Można sobie wyobrazić sytuację, w której na istniejących już zakładkach można dodawać nowe przyciski/grupy/menu lub nawet nowe pozycje do głównego menu.
Niezły pomysł, z tą modularną budową ribbona!
[…] O wstążce w pryzmacie ( Ribbon + Prism) […]
Czyżby przy używaniu wstążki szlag trafiał ClearType’a?
hmmm tak to wygląda ??? jakoś tego nie widzę ale ślepy jestem
http://img35.imageshack.us/img35/7350/14296404.png
Ano… wygląda to podobnie jak tekst w Silverlighcie.
Ogólnie to “ulepszone” renderowanie czcionek w WPF-ie ma jedną wadę, która uwidacznia się przy renderowaniu ciągu literek np. llllllllllllllll albo iiiiiiiiii. Całkiem inaczej wygląda to w GDI (czytelnie), a całkiem inaczej w WPF-ie (przesunięcia uwzględniające subpiksele = nieczytelnie).