Intellisense zur Designtime

  • WPF

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Nofear23m.

    Intellisense zur Designtime

    Hallo zusammen,

    seit ein paar Tagen funktioniert bei mir der Designtime Support nicht mehr.
    Ist jemandem bekannt ob bei einem Update irgendwas an den Einstellungen geändert wurde? Ich habe zwar keine gefunden die damit zusammenhängt, aber das heisst ja nichts.

    Ich habe folgenden Code:
    Spoiler anzeigen

    C#-Quellcode

    1. ​using System;
    2. using Verwaltung.Viewmodel.ViewmodelBase;
    3. namespace Verwaltung.Viewmodel.Workspaces
    4. {
    5. public class StatusWorkspace : ViewModelBase
    6. {
    7. // Eigenschaften
    8. public string Message { get; set; }
    9. public string Username { get; set; } = Environment.UserName;
    10. // Konstruktor
    11. public StatusWorkspace()
    12. {
    13. if (IsInDesignMode)
    14. {
    15. this.Message = "Willkommen zur Designzeit.";
    16. }
    17. else
    18. {
    19. this.Message = "Willkommen zur Laufzeit.";
    20. }
    21. }
    22. }
    23. }


    und folgendes USercontrol:
    Spoiler anzeigen

    XML-Quellcode

    1. ​<UserControl x:Class="Verwaltung.View.uclStatus"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6. xmlns:local="clr-namespace:Verwaltung.View"
    7. xmlns:ws="clr-namespace:Verwaltung.Viewmodel.Workspaces;assembly=Verwaltung.Viewmodel"
    8. mc:Ignorable="d" d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True,Type={x:Type ws:StatusWorkspace}}"
    9. d:DesignHeight="40" d:DesignWidth="800">
    10. <StatusBar>
    11. <StatusBarItem HorizontalAlignment="Left">
    12. <StackPanel Orientation="Horizontal">
    13. <ContentControl Content="{StaticResource IconMessage}" Style="{StaticResource ButtonIconContent}"/>
    14. <Label Content="{Binding Message}" Style="{StaticResource ButtonIconLabel}"/>
    15. </StackPanel>
    16. </StatusBarItem>
    17. <StatusBarItem HorizontalAlignment="Right">
    18. <StackPanel Orientation="Horizontal">
    19. <ContentControl Content="{StaticResource IconUser}" Style="{StaticResource ButtonIconContent}"/>
    20. <Label Content="{Binding Username}" Style="{StaticResource ButtonIconLabel}"/>
    21. </StackPanel>
    22. </StatusBarItem>
    23. </StatusBar>
    24. </UserControl>


    Hierbei bekomme ich nun keine Intellisense mehr wenn ich bei den Labels das Binding angeben möchte.
    Der DesignDataContext ist angegeben und alle "Imports" sind auch da. Mir werden sogar zur designzeit die richtigen Daten angezeigt aber keine Intellisense unterstützung.
    Ich habe mir auch nochmal das Tutorial inklusive Video von @Nofear23m angesehen, finde aber keinen fehler.

    Hier noch ein Bild wo Daten zur Designzeit angzeigt werden, trotz fehlender Intellisense.

    Was habe ich falsch gemacht oder vergessen?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Jo - eine von Wpfs Kinderkrankheiten.
    Irgendwo im Code stimmt was nicht, dann streikt Intellisense.
    Das kenne ich als Laufzeitfehler im Viewmodel.
    Der Wpf-Designer führt ja allerlei Viewmodel-Code auch aus.
    Also dass da zur Design-Zeit ein Laufzeitfehler auftritt, der evtl. zur wirklichen Laufzeit nicht auftritt (evtl. aufgrund anderer Datenlage).

    Das muss man worst-case mit Try/Error eingrenzen, aus welcher Gegend das entsteht:
    Also Komponente einbinden - geht nicht
    KOmponenten-Teile auskommentieren - geht
    paar Teile wieder einkommentieren - geht nicht

    usw.

    Aber es kann auch ein VisualStudio-Schluckauf sein, und Neustart von VS bringt Abhilfe.
    Hallo

    Kurze Frage an @Akanel

    Kann es sein das du .Net Core bzw. .Net 5 programmierst?
    Ich habe im Kopf das hier ein anderer Process für den Designer gestartet wird, der wurde glaube ich unbenannt.

    Zeig mal zum einen deine IsInDesignMode Methode der Basisklasse und sag bitte Bescheid welches Framework du verwendest.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hier mal die ViewModelBase Klasse:

    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Diagnostics;
    5. using System.Runtime.CompilerServices;
    6. namespace Verwaltung.Viewmodel.ViewmodelBase
    7. {
    8. public abstract class ViewModelBase : INotifyPropertyChanged, IDisposable
    9. {
    10. private static readonly List<string> HostProcesses = new List<string>() { "XDesProc", "devenv", "WDExpress" };
    11. public bool IsInDesignMode
    12. {
    13. get
    14. {
    15. var ret = HostProcesses.Contains(Process.GetCurrentProcess().ProcessName);
    16. return ret;
    17. }
    18. }
    19. #region INotifyPropertyChanged
    20. public event PropertyChangedEventHandler PropertyChanged;
    21. protected virtual void RaisePropertyChanged([CallerMemberName] string prop = "")
    22. {
    23. if (prop != null && prop.Length > 0)
    24. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
    25. }
    26. #endregion
    27. #region IDisposable Support
    28. private bool disposedValue = false; // Dient zur Erkennung redundanter Aufrufe.
    29. protected virtual void Dispose(bool disposing)
    30. {
    31. if (!disposedValue)
    32. {
    33. if (disposing)
    34. {
    35. }
    36. disposedValue = true;
    37. }
    38. }
    39. // Dieser Code wird hinzugefügt, um das Dispose-Muster richtig zu implementieren.
    40. public void Dispose()
    41. {
    42. // Ändern Sie diesen Code nicht. Fügen Sie Bereinigungscode in Dispose(bool disposing) weiter oben ein.
    43. Dispose(true);
    44. GC.SuppressFinalize(this);
    45. }
    46. #endregion
    47. }
    48. }


    Framework ist NET 4.7.2
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo

    OK, war nur eine Vermutung da ich den Code nicht angesehen hatte!
    Das habe ich jetzt nachgeholt....

    Deine Properties werfen kein PropertyChanged Event. Sonst sehe ich an diesem überschaubaren Code keinen Fehler.
    Intellisense hast du aber oder?

    Welche Version von VS? Evtl. probier ich deinen Code heute Abend.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ok, das PropertyChangedEvent ist nachgerüstet.

    Intellisense grundsätzlich Ja, nur beim Binding bekomme ich keine Vorschläge. Oder meinst du jetzt gerade etwas anderes?

    Ich nutze Visual Studio Community 2019 Version 16.7.5
    Ich hänge mal das Projekt an, vielleicht ist auch was anderes das Problem.
    Dateien
    • Verwaltung00.zip

      (25,02 kB, 82 mal heruntergeladen, zuletzt: )
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo

    Also, das liegt sicher an deiner VS Installation.

    Ich bekomme sowohl Intellisense Vorschläge als auch DesignTime Support.

    Grüße
    Sascha
    Bilder
    • Anmerkung 2020-10-08 121008.png

      86,79 kB, 1.489×874, 81 mal angesehen
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Korrekt, probiere das mal mit dem Label. Da kommt kein Vorschlag. Ich sollte "Message" oder "Username" angeboten bekommen. Bekomme aber nichts dergleichen angeboten.
    Siehe das Bild welches ich im 1. Post eingefügt habe!
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Naja, eben doch.

    Wie gesagt, da hats was bei dir.

    Probier mal das Projekt zu bereinigen und neu zu kompilieren. STRG + SHIFT + B
    Bilder
    • 1.png

      32,73 kB, 620×277, 84 mal angesehen
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Hier in der Arbeit habe ich nur die 16.4.4, aber ich kann es gerne daheim in der neuesten + einer Preview versuchen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Sehr seltsam... ich wäre dir dankbar wenn du es heute Abend mal probieren würdest. Weil es scheint ja nicht am Code zu liegen....alles da was man brauch.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Hallo @Akanel

    Du/ihr habt recht. Hier in der 16.7.3 habe ich kein Intellisense, in der 16.8.0 Preview 3.1 funzt es allerdings wieder.
    Da hat MS wohl etwas verdaddelt. ;)

    Ist wohl abwarten obs das Problem im nächten Release noch vorhanden ist oder parallel die Preview installieren. Ich hab die Preview sowieso wegen .Net 5 oben.
    Auch hier gibt es noch ein paar probleme und definitiv ein paar mehr Abstütze als mit der Stable aber sie läuft gut.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Danke dir vielmals fürs testen. Somit kann ich mich wieder dem programmieren und lernen widmen um brauch nicht weiter nach Fehlern suchen.
    Mit Net5 habe ich mich bisher noch nicht auseinandergesetzt. Kommt später.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Gerne, anscheinend Betrifft es nur ein paar Versionen. In der Firma, mit einer ältern klappt es, mit der Preview auch aber mit der aktuellen "Stable" (von wegen) nicht. Haha

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Heute morgen bekam ich die Meldung das Version 16.7.6 verfügbar ist und ich hatte die Hoffnung das der Fehler damit beseitigt wird.
    JA, er wurde behoben und es funktioniert wieder alles. :thumbsup:
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Super, gut zu wissen. Danke für die Info
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##