Novinky ve verzi 4.5 grafického subsystému WPF

Toto téma obsahuje informace o nových a vylepšených funkcích systému Windows Presentation Foundation (WPF) verze 4.5.

Toto téma obsahuje následující části:

Ovládací prvek pásu karet

WPF 4.5 se dodává s ovládacím Ribbon prvek, který hostuje panel nástrojů Rychlý přístup, nabídku aplikace a karty. Další informace najdete v přehledu pásu karet.

Lepší výkon při zobrazení velkých sad seskupených dat

K virtualizaci uživatelského rozhraní dochází v případě, že se z většího počtu datových položek generuje podmnožina prvků uživatelského rozhraní (UI) na základě toho, které položky jsou na obrazovce viditelné. Definuje VirtualizingPanel připojenou IsVirtualizingWhenGrouping vlastnost, která umožňuje virtualizaci uživatelského rozhraní pro seskupené data. Další informace o seskupování dat naleznete v tématu Postupy: Řazení a seskupení dat pomocí zobrazení v XAML. Další informace o virtualizaci seskupených dat naleznete v IsVirtualizingWhenGrouping připojené vlastnosti.

Nové funkce virtualizingPanel

  1. Pomocí připojené vlastnosti můžete určit, zda například VirtualizingPanel, zobrazí částečné položkyScrollUnit.VirtualizingStackPanel Pokud ScrollUnit je nastavená hodnota Item, VirtualizingPanel zobrazí se pouze položky, které jsou zcela viditelné. Pokud ScrollUnit je nastavená VirtualizingPanel hodnota Pixel, může zobrazit částečně viditelné položky.

  2. Velikost mezipaměti můžete určit před a za oblast zobrazení při VirtualizingPanel virtualizaci pomocí CacheLength připojené vlastnosti. Mezipaměť je velikost místa nad nebo pod výřezem, ve kterém nejsou položky virtualizovány. Použití mezipaměti, aby se zabránilo generování prvků uživatelského rozhraní při posouvání do zobrazení, může zvýšit výkon. Mezipaměť se naplní s nižší prioritou, aby aplikace během operace nereaguje. Vlastnost VirtualizingPanel.CacheLengthUnit určuje měrnou jednotku, kterou používá VirtualizingPanel.CacheLength.

Vazba na statické vlastnosti

Statické vlastnosti můžete použít jako zdroj datové vazby. Modul datových vazeb rozpozná, kdy se hodnota vlastnosti změní, pokud je vyvolána statická událost. Pokud například třída SomeClass definuje statickou vlastnost s názvem MyProperty, SomeClass může definovat statickou událost, která je vyvolána při změně hodnoty MyProperty . Statická událost může používat některý z následujících podpisů.

  • public static event EventHandler MyPropertyChanged;

  • public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

Všimněte si, že v prvním případě třída zveřejňuje statickou událost s názvem PropertyNameChanged , která se předává EventArgs obslužné rutině události. V druhém případě třída zveřejňuje statickou událost s názvem StaticPropertyChanged , která se předává PropertyChangedEventArgs obslužné rutině události. Třída, která implementuje statickou vlastnost, se může rozhodnout vyvolat oznámení o změně vlastností pomocí některé z metod.

Přístup ke kolekcím na vláknech bez uživatelského rozhraní

WPF umožňuje přístup k kolekci dat a jejich úpravám na jiných vláknech, než je ta, která kolekci vytvořila. To umožňuje použít vlákno na pozadí k příjmu dat z externího zdroje, jako je databáze, a zobrazení dat ve vlákně uživatelského rozhraní. Pomocí jiného vlákna k úpravě kolekce zůstane uživatelské rozhraní responzivní na interakci uživatele.

Synchronní a asynchronní ověřování dat

Rozhraní INotifyDataErrorInfo umožňuje třídám datových entit implementovat vlastní ověřovací pravidla a vystavit výsledky ověření asynchronně. Toto rozhraní také podporuje vlastní objekty chyb, více chyb na vlastnost, chyby křížové vlastnosti a chyby na úrovni entity. Další informace najdete na webu INotifyDataErrorInfo.

Automatická aktualizace zdroje datové vazby

Pokud k aktualizaci zdroje dat použijete datovou vazbu, můžete pomocí Delay vlastnosti určit dobu, po které se vlastnost změní v cíli před aktualizacemi zdroje. Předpokládejme například, že máte s daty Slider vlastností Value svázaná obousměrně na vlastnost datového objektu UpdateSourceTrigger a vlastnost je nastavena na PropertyChangedhodnotu . V tomto příkladu, když uživatel přesune Slider, zdroj aktualizuje pro každý pixel, který se přesune Slider . Zdrojový objekt obvykle potřebuje hodnotu posuvníku pouze v případech, kdy se posuvník Value přestane měnit. Chcete-li zabránit aktualizaci zdroje příliš často, použijte Delay k určení, že zdroj by se neměl aktualizovat, dokud po uplynutí určitého časového limitu palce nepřejde.

Vazba na typy, které implementují ICustomTypeProvider

WPF podporuje datové vazby k objektům, které implementují ICustomTypeProvider, označované také jako vlastní typy. Vlastní typy můžete použít v následujících případech.

  1. PropertyPath Jako v datové vazbě. Path Například vlastnost může odkazovat na vlastnost Binding vlastního typu.

  2. Jako hodnota DataType vlastnosti.

  3. Jako typ, který určuje automaticky generované sloupce v sadě DataGrid.

Načítání informací o vazbě dat z výrazu vazby

V některých případech můžete získat BindingExpressionBinding informace o zdrojovém a cílovém objektu vazby a potřebovat je. Přidali jsme nová rozhraní API, která vám umožní získat zdrojový nebo cílový objekt nebo přidruženou vlastnost. Pokud máte rozhraní BindingExpressionAPI, získejte informace o cíli a zdroji pomocí následujících rozhraní API.

Vyhledání této hodnoty vazby Použít toto rozhraní API
Cílový objekt BindingExpressionBase.Target
Cílová vlastnost BindingExpressionBase.TargetProperty
Zdrojový objekt BindingExpression.ResolvedSource
Zdrojová vlastnost BindingExpression.ResolvedSourcePropertyName
BindingExpression Zda patří doBindingGroup BindingExpressionBase.BindingGroup
Vlastník BindingGroup Owner

Kontrola platného objektu DataContext

Existují případy, kdy DataContext se kontejner položky v ItemsControl odpojení odpojí. Kontejner položek je prvek uživatelského rozhraní, který zobrazuje položku v objektu ItemsControl. ItemsControl Pokud jsou data svázaná s kolekcí, kontejner položek se vygeneruje pro každou položku. V některých případech se kontejnery položek odeberou ze stromu vizuálu. Dva typické případy, kdy se odebere kontejner položek, jsou, když je položka odebrána z podkladové kolekce a kdy je povolena virtualizace v objektu ItemsControl. V těchto případech DataContext se vlastnost kontejneru položek nastaví na objekt sentinelu vrácený statickou BindingOperations.DisconnectedSource vlastností. Před přístupem ke DataContext kontejneru položek byste měli zkontrolovat, jestli DataContext se objekt rovná DisconnectedSource objektu.

Změna umístění dat při změně hodnot dat (živé tvarování)

Kolekci dat je možné seskupit, řadit nebo filtrovat. WPF 4.5 umožňuje změnit uspořádání dat při úpravě dat. Předpokládejme například, že aplikace používá k výpisu DataGrid akcií na burzovním trhu a akcie jsou seřazené podle hodnoty akcií. Pokud je na akciích CollectionViewpovolené řazení za provozu, pozice akcie v DataGrid pohybu, když je hodnota akcie větší nebo menší než hodnota jiné akcie. Další informace najdete v ICollectionViewLiveShaping rozhraní.

Vylepšená podpora pro vytvoření slabého odkazu na událost

Implementace slabého vzoru událostí je teď jednodušší, protože předplatitelé událostí se můžou účastnit bez implementace dalšího rozhraní. Obecná WeakEventManager třída také umožňuje odběratelům účastnit se slabého vzoru událostí, pokud pro určitou událost neexistuje vyhrazený WeakEventManager objekt. Další informace naleznete v tématu Slabé vzory událostí.

Nové metody pro třídu Dispatcher

Třída Dispatcher definuje nové metody pro synchronní a asynchronní operace. Synchronní Invoke metoda definuje přetížení, která přebírají nebo ActionFunc<TResult> parametr. Nová asynchronní metoda, InvokeAsynctaké přebírá Action nebo Func<TResult> jako parametr zpětného volání a vrací DispatcherOperation nebo DispatcherOperation<TResult>. DispatcherOperation<TResult> Třídy DispatcherOperation definují Task vlastnost. Při volání InvokeAsyncmůžete použít await klíčové slovo s přidruženou DispatcherOperation nebo přidruženou Task. Pokud potřebujete synchronně počkat na Task to, co je vráceno metodou DispatcherOperation nebo DispatcherOperation<TResult>, zavolejte metodu DispatcherOperationWait rozšíření. Volání Task.Wait způsobí zablokování, pokud je operace zařazena do fronty ve volajícím vlákně. Další informace o použití funkce Task k provádění asynchronních operací naleznete v tématu Paralelismus úkolů (knihovna paralelních úloh).

Rozšíření značek pro události

WPF 4.5 podporuje rozšíření značek pro události. WpF sice nedefinuje rozšíření značek, které se má použít pro události, ale třetí strany mohou vytvořit rozšíření značek, které lze použít s událostmi.

Viz také