Beiträge von GP

    Aus der VM heraus wechsle ich die Views auch per Messaging.




    Zitat

    In einer bestimmten View drin, beispielsweise View A:
    Messenger.Default.Send<Messages.ChangeScreenMessage>(new Messages.ChangeScreenMessage() { PageName = Messages.ViewName.B, ... });


    Nun kannst du noch den Command des Buttons mit einem Switch-Statement über die jetzige View ergänzen oder sowas und basierend darauf unterschiedliche Messages senden

    Ich vermute, das ist ein Fakt den viele Junglenker mit einem teuren Leasing ausblenden. Wenn durch Grobfahrlässigkeit die Vollkasko aussteigt, steht man mit teuren Monatsprämien und ohne Auto da.


    (Anbei nur ein Beispielbild eines sonst hübschen BMW 335, welchen ich vor kurzer Zeit so gesehen habe, wobei ich da weder Grobfahrlässigkeit noch Leasing unterstelle)

    Zitat

    Original von Saiba
    Aber Leasing scheint mir doch etwas übertrieben verpönt zu sein.
    Wer nicht warten mag, finanziell gut gestellt ist und alles durchgeplant hat, dem mag doch ein Leasing gegönnt sein ?(


    Das wird vermutlich auf 2% der Leasingnehmer zutreffen.

    Zitat

    Original von caradhras
    Da nenn ich extra nich den Namen der Seite und dann kommst du daher :(



    Aber erst nach deinem Post hier kapiert man, dass man nach dem Namen da oben mal googeln sollte :p

    Ich weiss nicht, ob das die formell korrekte Lösung für das Problem ist, aber zur Kommunikation zwischen VMs verwende ich meistens Messaging.


    - Unter "Models" (wo auch deine User definiert sein sollten), erstellst du deine Mitteilungen, beispielsweise eine UserQueryMessage.


    - Du bindest GalaSoft.MvvmLight.Messaging ein


    - Das VM mit den Benutzerkonten registriert sich im Konstruktor bei dem Messaging-Dienst und abonniert UserQueryMessages:
    Messenger.Default.Register<Messages.UserQueryMessage>(this, x => UserQueryMessage(x));


    - In der VM stellst du die Methode UserQueryMesssage zur Verfügung, welche die entsprechenden Checks durchführt.


    - Das VM, welche wissen möchte, ob der Benutzer vorhanden ist, stellt über den Messaging-Dienst die entsprechende Anfrage:
    Messenger.Default.Send<Messages.UserQueryMessage>(new Messages.UserQueryMessage() { Username = _user, Password = _pw });


    So bleibt auch die Liste der User ausschliesslich in dem einen VM verwaltet und die Zugriffe darauf geschützt.

    Hallo zusammen
    in Ergänzung zum Thread im Marktplatz; was würdet ihr für Nvidia Grafikkarten empfehlen, um (Sha)-Hashes zu berechnen? Idealerweise etwas mit gutem P/L Verhältnis. Und lohnt sich SLI für Cuda-Code?

    Auch wenn man das so gewohnt ist bei anderen Dingen, aber lasst euch keine Versicherungen online berechnen. Das sind alles Phantasiepreise und bei der Agentur direkt kommt ihr schon viel billiger.


    Kleines Beispiel (rein erfundene Zahlen. Übereinstimmung mit einer realen Situation ist rein zufällig.):


    - Basel kalkuliert eine Prämie von 950.- über das Onlineformular
    - Anruf bei TCS (Kollektivmitglied bei Basel) verlangt nach Angabe dieser Zahl für die selbe Versicherung nur 800.-
    - Basel-Mitarbeiter verlangt nach Angabe der Offerte des TCS für die genau gleiche Versicherung nur 650.-



    Sucht euch online 2-3 sympathische Versicherungen raus und sprecht mit denen persönlich, haltet ein paar Zahlen bereit und ihr macht mit Abstand den besseren Deal als über irgendein idirect oder sonstwas.

    OKI hat gerade Cashback Aktion, beispielsweise auf diesem Gerät hier bei Digitec. Es hat dort auch ein billigeres Gerät mit WLAN

    el-nino: Das sieht schon sehr gut aus! Der einzige Fehler ist folgender:
    Du hast eine Property (BackgroundColor) erstellt, welche das Schreiben und das Lesen der Variable _backgroundColor regelt, um diese Funktionalitäten eben genau mit dem Abfeuern des Events zu erweitern.
    Aus diesem Grund darfst du im ganzen Code nur über diese Property die Variable manipulieren, nicht die Variable selbst. Du musst also nur folgende zwei Zeilen ersetzen


    _backgroundColor = Brushes.Green; durch BackgroundColor = Brushes.Green;


    _backgroundColor = Brushes.Red; durch BackgroundColor = Brushes.Red;



    Zitat

    Original von BLJ


    Ja das war wohl ein psuedo Code Beispiel ;-)
    Die Method musst du dir selbst denken. Es gibt sie z.T. in WPF GUI Libraries / Frameworks wie Caliburn.Micro in Basisklassen (z.B. Screen), also wenn dein ViewModel : Screen implementiert geht das.


    Er benutzt das MVVM-Light Framework, dort ist das alles schon implementiert. Aber ich gebe dir Recht, fürs Verständnis wäre es besser, das alles selbst zu machen :)

    Wenn du nur so Sachen wie Farbe (Vorder-/Hintergrund), Text, etc aus dem Programm verändern willst, kannst du die ganze Erweiterung des Labels entfernen.


    Vorab, das MVVM-Pattern klingt recht einfach und einleuchtend, aber bis man es wirklich verstanden hat, dauert es doch seine Zeit. Zwei Grundpfeiler des Patterns:


    - Dynamische Inhalte (auch Farben und Eigenschaften) der View werden per Databinding aus dem ViewModel eingebunden
    - Aktionen in der View lösen einen Command im ViewModel aus



    Wenn das noch zu sehr nach Bahnhof klingt, mach dich unbedingt mit der Theorie des Patterns vertraut.



    Zu deinem Problem:
    Ich würde das SPS-Label nicht vom Label ableiten und erweitern, wie man es in anderen Sprachen macht. Es braucht wie im oberen Post erwähnt, viel viel weniger.


    - Überall, wo dieses Label in der View verwendet wird, erstellst du ein ganz normales Label und bindest die zu verändernden Eigenschaften per Databinding an Properties deines ViewModels.
    - Im ViewModel musst du du diese Properties hinzufügen und sie bei einer Änderung des Wertes jeweils einen Event auslösen lassen, damit die View benachrichtigt wird, dass die jeweilige Eigenschaft geändert wurde.


    Wenn du MVVM-Light verwendest und im ViewModel "using GalaSoft.MvvmLight;" einfügst, dann steht dir die Klasse "ObservableObject" zur Verfügung. Diese stellt dir das Event "RaisePropertyChanged" zur Verfügung

    Ich hab den Code nur kurz überflogen, aber für die zusätzliche Funktionalität würde ich die zu ändernden Eigenschaften der Elemente der View an eine Property des ViewModels binden. So kannst du aus der Programmlogik heraus alles mögliche ändern, ohne dass du dazu die Elemente erweitern musst.


    Sobald ich an einem PC bin, kann ich das als Code zur Illustration posten :)


    Im der View XAML

    Zitat


    <Label Content="Blabla" Foreground="{Binding ForegroundColor}"/>


    im ViewModel


    Durch das Databinding wird die Farbe an die Eigenschaft im XAML gebunden und durch das PropertyChanged-Event jeweils beim Verändern der Variable aktualisiert.