Oto duża liczba ukrytych funkcji omówionych w różnych językach. Teraz jestem ciekawy niektórych ukrytych funkcji XAML i WPF?
Jeden, który znalazłem, to zdarzenie kliknięcia nagłówka w ListView
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
Właściwość GridViewColumnHeader.Click nie jest wymieniona.
Niektóre z istotnych funkcji do tej pory:
Zobacz też:
wpf
xaml
hidden-features
Sauron
źródło
źródło
Odpowiedzi:
Multibinding (w połączeniu z StringFormat):
źródło
Istnieje również sztuczka PresentationTraceSources.TraceLevel do debugowania tego, co dzieje się z powiązaniami w dowolnym konkretnym scenariuszu. Wszystko, co musisz zrobić, to odwołać się do przestrzeni nazw System.Diagnostics w zestawie WindowsBase
a następnie dodaj następujące wyrażenie do wyrażenia wiążącego:
Dziennik będzie wyglądał następująco:
źródło
3.5sp1 wprowadził TargetNullValue do powiązań. Spowoduje to ustawienie powiązanej właściwości na Null, jeśli wartość zostanie wprowadzona, a jeśli właściwość ma wartość Null, wyświetli tę wartość.
źródło
3.5sp1 wprowadził StringFormat do wyrażeń wiążących, np
źródło
Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
Czasami otrzymujesz ciąg, który jest zbyt długi, aby pokazać go na etykiecie. W tym przypadku możemy skorzystać z
TextTrimming
właściwości of,TextBlock
aby wyświetlić wielokropkiMSDN Link
źródło
Dodanie efektu Aero do okna
źródło
Typy ogólne w XAML z x: TypeArguments
Jeśli chcesz użyć ObservableCollection w XAML, musisz utworzyć typ, który pochodzi od ObservableCollection, ponieważ nie możesz zadeklarować go w XAML. W języku XAML 2009 można użyć atrybutu x: TypeArguments, aby zdefiniować typ typu ogólnego.
źródło
Pokaż etykietkę dla wyłączonej kontrolki
Wpf umożliwia wyświetlanie podpowiedzi na kontrolce, jeśli jest ona wyłączona.
Na przykład
źródło
Używanie konstruktorów innych niż domyślne z argumentami x:
W XAML 2006 obiekty muszą mieć publicznego konstruktora domyślnego, aby ich używać. W języku XAML 2009 można przekazywać argumenty konstruktora przy użyciu składni x: Arguments.
źródło
Niezbyt ukryta funkcja, ale dzięki WPF / XAML otrzymujesz Bea Stollnitz i Josh Smith . Królowa i król programowania WPF / XAML.
źródło
Rozszerzenia znaczników i dołączone właściwości to moje ulubione funkcje, które umożliwiają rozszerzenie „słownictwa” XAML w bardzo elegancki sposób.
Rozszerzenia znaczników
Załączone właściwości
Źródło GridViewSort (przy okazji używa
GridViewColumnHeader.Click
zdarzenia wspomnianego przez Ortusa)źródło
WinUtil.EnableAeroGlass
jest gdzieś dostępne?Możesz odwoływać się do typów zagnieżdżonych w XAML przy użyciu znaku plus (
+
). Na przykład, gdybyśmy mieli tę klasę:Możemy odwoływać się do
SomeValue
języka XAML przy użyciu następującej składni:Ta składnia nie jest udokumentowana w witrynie MSDN i nie jest oficjalnie obsługiwana. Ktoś zapytał o to na forach MSDN i najwyraźniej psuje WPF Designer VS2010. Zostało to zgłoszone w Microsoft Connect.
źródło
Udostępnianie rozmiaru siatki ( oto dobry przykład). Krótko mówiąc, kolumny i wiersze siatki mogą mieć takie same rozmiary, nawet w różnych siatkach. Będzie to nieocenione dla wszystkich ludzi, którzy używają DataGrids bez konieczności edytowania danych w miejscu.
źródło
PriorityBinding . Umożliwia korzystanie z asynowych wiązań w kolejności „kto pierwszy ten lepszy”:
źródło
Użycie statycznych metod fabryki z x: FactoryMethod
Jeśli masz typ, który nie ma konstruktora publicznego, ale statyczną metodę fabryki, musisz utworzyć ten typ w kodzie w XAML 2006. W przypadku języka XAML 2009 możesz użyć atrybutu x: FactoryMethodx: Arguments, aby przekazać wartości argumentów.
źródło
Zaawansowane właściwości „podpisu”
Inną rzeczą, która nie jest zbyt jasna, jest zawartość niektórych właściwości, do których przywykliśmy, że zawiera tylko tekst. Jeśli właściwość elementu GUI jest typu Object, jest bardzo prawdopodobne, że zamiast tylko ustawiania tekstu, można dodać panel według potrzeb, zawierający zestaw elementów sterujących.
Przykładem tego jest MenuItem, gdzie
Header
właściwość (która zwykle zawiera tylko tekst) może zawierać zestaw elementów gui opakowanych w kontrolkę panelu (lub tylko jeden element gui, jeśli potrzebujesz tylko jednego).Zwróć także uwagę na
Icon
właściwość w MenuItem. Zwykle zawiera element Image, ale może też zawierać wszystko!źródło
Konwertery XAML
Na poniższej liście przedstawiono konwertery opracowane przez społeczność WPF w celu konwertowania różnych formatów na XAML lub odwrotnie.
Wtyczka Adobe Illustrator XAML Export
Konwerter Adobe Photoshop na XAML
Wtyczka Blender XAML Export
Wtyczka Lightwave XAML Export
Eksport Visio XAML
Konwerter 3D Studio Max na XAML
Konwerter Maya na XAML
Konwerter Flash na XAML
Konwerter SVG na XAML
Konwerter WMF / EMF na XAML
źródło
Wbudowane typy
Jeśli chcesz dziś dodać obiekty prostego typu, takie jak string lub double do słownika zasobów, musisz zmapować potrzebne przestrzenie nazw clr na przestrzenie nazw XML. W XAML 2009 mamy wiele prostych typów, które są zawarte w języku XAML.
W języku XAML uwzględniono następujące typy:
źródło
Łatwe odniesienia do obiektów dzięki {x: Reference}
Jeśli chcesz dziś utworzyć odwołanie do obiektu, musisz wykonać powiązanie z danymi i zadeklarować źródło za pomocą elementu ElementName. W języku XAML 2009 możesz użyć nowego rozszerzenia znaczników {x: Reference}
źródło
x:Reference
jest to funkcja języka XAML 2009, istnieją pewne scenariusze, w których będzie działać również w skompilowanym XAML. Jednak nie działa wszędzie i może zepsuć widok projektanta XAML.Wykorzystanie kolorów systemu
źródło
Obsługa arbitralnych kluczy słowników
W języku XAML 2006 wszystkie jawne wartości x: Key były traktowane jako ciągi. W XAML 2009 możesz zdefiniować dowolny typ klucza, pisząc klucz w ElementSyntax.
źródło
Ustaw ValidationError według kodu
ValidatioRule w BindingExpression jest wyzwalany tylko w przypadku zmiany strony docelowej powiązania. Jeśli chcesz ustawić błąd walidacji według kodu, możesz użyć następującego fragmentu kodu.
Ustaw błąd walidacji
Usuń błąd walidacji
źródło
Możliwość umieszczania elementów UIElement w TextBlock
Nie wiem, jak przydatne (kwalifikuje się jako ukryte) to jest ... ale z pewnością zaskoczyło mnie, gdy pierwszy raz na to wpadłem :
Możesz argumentować, że następujący xaml może być przydatny (np. Umieszczenie grafiki na końcu jakiegoś tekstu):
Powyższy xaml renderuje się następująco:
źródło
Animacje debugowania
Powszechne błędy
Jeśli pojawi się następujący błąd: Nie można animować „(0). (1)” na niezmiennej instancji obiektu. może się zdarzyć, że napotkasz jedno z następujących ograniczeń:
źródło
Wiązanie bez INotifyPropertyChanged lub DependencyProperties
Jak omówiono tutaj , możesz powiązać zwykłą właściwość obiektu CLR bez INotifyPropertyChanged i po prostu zadziała .
Oto Forumpost, do którego się odnoszę .
Zacytować:
Oto kolejny świetny i szczegółowy artykuł na ten temat.
źródło