Próbuję użyć podejścia MVVM-ish do mojego rozwoju WPF.Podstawy WPF: Współdzielone style globalne dla MVVM
Mam moje klasy widoku widoku logicznego w przestrzeni nazw ViewModel i mam pasujące styl dla tych klas modelu widok w obszarze nazw View.
Na razie mam moje informacje o widoku w plikach XAML ResourceDictionary, jak DataTemplates i Style, które są scalone w pojedynczą aplikację App.Resources ResourceDictionary w pliku app.xaml.
Jednak mam pewien rodzaj problemu z kurczakiem/jajkiem. Chcę, żeby były globalne style, których używam wszędzie. Na przykład chcę mieć własny niestandardowy styl tekstu o nazwie MonkeyText, który może być używany w różnych stylach w każdym miejscu. Nie mogę tego po prostu ustawić w pliku app.xaml, ponieważ pliki resourcedictionarys, które będą używać MonkeyText, są zawarte w tym pliku app.xaml.
Domyślam się, że to niemożliwe, alternatywnie byłoby użyć UserControls zamiast używać głównie DataTemplates do ustalenia moich widoków? Obawiam się, że użycie UserControls wiązałoby części VM i V zbyt blisko siebie.
zawsze raczej się nad tym zastanawiałem, dzięki za odpowiedź, nigdy nie dotarłem wystarczająco daleko do WPF poza kilkoma apletami .. btw, w jaki sposób kaskady zależne viewmodels? czy masz tylko jeden "model widoku aplikacji" lub masz "model główny" z "childviewmodel" z "descendantviewmodel" – Firoso
Zwykle masz jeden "główny" model widoku, a następnie twoje obiekty modelu są przez niego przywoływane i tworzą pewne hierarchia. To trochę bardziej skomplikowane - i zależy trochę od struktury danych w twojej aplikacji - ale to jest krótka wersja –
Ale co by było, gdybyś chciał, aby MonkeyText był używany na wszystkich TextBlockach? W normalnym WPF możesz zadeklarować styl w App.xaml i dzięki TargetType będzie działać na wszystkich TextBlocks. Ale użycie MVVM nie działa, chyba że zadeklaruję DynamicResource na wszystkich kontrolkach. – Peter