Laden...

Dynamisch geladene Ressourcen/MVVM u CAB

Erstellt von Omit vor 15 Jahren Letzter Beitrag vor 14 Jahren 2.792 Views
Omit Themenstarter:in
143 Beiträge seit 2008
vor 15 Jahren
Dynamisch geladene Ressourcen/MVVM u CAB

Hallo,

Ich setze das MVVM Pattern und die CAB ein.

Ich lege für jedes ViewModel in den Ressourcen ein DataTemplate an. Welches als Inhalt die zum ViewModel passende View hat. Dann kann ich der UI einfach die ViewModels übergeben und es sucht sich selbst die richtige View. Dadurch entsteht eine noch losere Kopplung.


<DataTemplate DataType="{x:Type vm:XYViewModel}">
     <v:XYView />
</DataTemplate>

Ich arbeite mit dem CAB(Composite Application Block) und habe deswegen die Anwendung auf viele Module aufgeteilt. Ich will nun diese DataTemplates aus den Modulen in die Ressourcen der Application laden. Kennt da jemand einen weg dieses DataTemplate aus dem Modul in die Applications Ressourcen zu laden?

Gruß Timo

5.742 Beiträge seit 2007
vor 15 Jahren

Hallo Omit,

zwar keine Antwort auf deine Frage:
Aber mache es doch wie ich:
Jedes View (also sprich jedes UserControl) wird mit einem Attribut View versehen, dessen Konstruktor den Type des zugehörigen ViewModels entgegennimmt.
Nun braucht man nur noch einen DataTemplateSelector der per Reflection alle Typen einer Assembly (alle geladenen zu durchlaufen würde zu lange dauern - daher verwende ich ein weiteres Attribut ViewAssembly), die mit einem View Attribut gekennzeichnet sind durchläuft, den passenden findet und ein entsprechendes DataTemplate generiert.
Dann ist das ganze noch loser gekoppelt und man braucht keine unzähligen _DataTemplate_s.

1.274 Beiträge seit 2005
vor 15 Jahren

Hallo Omit,

zwar auch keine Antwort auf die Frage, aber ist für WPF nicht Prism das Framework. Der CAB ist doch für Windows Forms gebaut.

lg
LG

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein

F
10.010 Beiträge seit 2004
vor 15 Jahren

Genau.

CAB/SCSF hat zwar ein WPF Conzept, das ist aber eher drangefrickelt.
Für WPF benutze wirklich eher Prism

Omit Themenstarter:in
143 Beiträge seit 2008
vor 15 Jahren

Danke erstmal. Ich dachte "CAB for Wpf" welches Feb. 09 rausgekommen ist, wäre Prism. Muss da nochmal mehr nachlesen, wenn meine Klausur rum ist.

Gruß Timo

F
10.010 Beiträge seit 2004
vor 15 Jahren

Es gibt kein "CAB for Wpf".

Prism ist "patterns & practices Composite Application Guidance for WPF and Silverlight"

Omit Themenstarter:in
143 Beiträge seit 2008
vor 15 Jahren

Ok, Composite Application Guidance for WPF(Prism), benutz ich, hab das mit dem Composite Application Block gleichgesetzt. Entschuldigung für die Verwirrung.

Gruß Timo

Omit Themenstarter:in
143 Beiträge seit 2008
vor 14 Jahren

Ist zwar schon etwas her. (Bin noch Student). Bin über die Antwort gestolpert:
PresentationModel with datatemplates in compositewpf prism sample

private static void RegisterResources()
{
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri(“pack://application:,,,/Commanding.Modules.Order;Component/OrdersResourceDictionary.xaml”);
Application.Current.Resources.MergedDictionaries.Add(dictionary);
}

Gruß Timo

446 Beiträge seit 2004
vor 14 Jahren

Hier der Code in XAML

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/dllname;component/verzeichnisinderxamlindllliegt/Dictionary.xaml" />
                <!--<ResourceDictionary Source="styles.xaml"></ResourceDictionary>-->
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

lg

Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp