Czy można ustawić kod za słownikiem zasobów w WPF. Na przykład w kontrolce użytkownika dla przycisku deklarujesz go w języku XAML. Kod obsługi zdarzenia dla kliknięcia przycisku znajduje się w pliku kodu znajdującym się za formantem. Gdybym miał utworzyć szablon danych z przyciskiem, w jaki sposób mogę napisać kod obsługi zdarzeń dla jego kliknięcia przycisku w słowniku zasobów.
147
Odpowiedzi:
Myślę, że chcesz mieć plik związany z kodem dla ResourceDictionary. Możesz to zrobić całkowicie! W rzeczywistości robisz to tak samo, jak w przypadku okna:
Załóżmy, że masz ResourceDictionary o nazwie MyResourceDictionary. W pliku MyResourceDictionary.xaml umieść atrybut x: Class w elemencie głównym, na przykład:
Następnie utwórz kod związany z plikiem o nazwie MyResourceDictionary.xaml.cs z następującą deklaracją:
I jesteś skończony. Możesz umieścić w kodzie wszystko, co chcesz: metody, właściwości i programy obsługi zdarzeń.
== Aktualizacja dla aplikacji Windows 10 ==
Na wypadek, gdybyś grał z UWP , jest jeszcze jedna rzecz, o której należy pamiętać:
źródło
x:Class="MyCompany.MyProject.MySubFolder1.MyResourceDictionary"
W przeciwnym razie, jeśli po prostu wstawisz x: Class = "MyResourceDictionary", parser xaml nie znajdzie twojej klasy.Nie zgadzam się z „ageektrapped”… stosowanie metody częściowej nie jest dobrą praktyką. Jaki byłby zatem cel oddzielenia Słownika od strony?
Z poziomu kodu można uzyskać dostęp do elementu ax: Name za pomocą:
Można zrobić to w metodzie OnApplyTemplate jeśli chcesz hookup kontrolom Po wczytaniu kontroli zwyczaj. Aby to zrobić, należy zastąpić OnApplyTemplate. Jest to powszechna praktyka i pozwala na odłączenie twojego stylu od kontroli. (Styl nie powinien zależeć od kontrolki, ale kontrolka powinna zależeć od posiadania stylu).
źródło
Gishu - chociaż może się to wydawać, że jest to praktyka „generalnie nie do zachęcania”. Oto jeden z powodów, dla których warto to zrobić:
Standardowym zachowaniem pól tekstowych, gdy są one aktywne, jest umieszczenie karetki w tym samym miejscu, w którym było, gdy formant stracił fokus. Jeśli wolisz, aby w całej aplikacji, gdy użytkownik przechodził do dowolnego pola tekstowego, cała zawartość pola tekstowego była podświetlona, dodanie prostego modułu obsługi w słowniku zasobów załatwi sprawę.
Każdy inny powód, dla którego chcesz, aby domyślne zachowanie interakcji użytkownika różniło się od zachowania po wyjęciu z pudełka, wydaje się być dobrym kandydatem na kod znajdujący się w słowniku zasobów.
Całkowicie zgadzam się, że wszystko, co jest specyficzne dla funkcji aplikacji, nie powinno znajdować się w kodzie za słownikiem zasobów.
źródło
XAML służy do konstruowania grafów obiektów niezawierających kodu.
Szablon danych służy do wskazania, w jaki sposób niestandardowy obiekt użytkownika ma być renderowany na ekranie ... (np. Jeśli jest to element listy) zachowanie nie jest częścią obszaru specjalizacji szablonu danych. Przerysuj rozwiązanie ...
źródło