WFP Debugger. Kann man WPF Debuggern?

  • WPF

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

    Man kann WPF Anwendungen genauso debuggen wie Windows Forms. Am leichtesten geht das, wenn man im Code an der betreffonen Stelle einen Rechtsklick macht und auf "Haltepunkt hinzufügen" klickt.

    Grüße
    Fabian

    EugenIS schrieb:

    Debuggern
    Das heißt Debuggen, da fallen keine Erdarbeiten an. :D
    Den C#- bzw. VB.NET-Code kannst Du debuggen wie jeden Code.
    Das GUI-XAML-Zeugs, was auf der GPU läuft, eher nicht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    XAML ist deklarativ. Da läuft nix ab. Das was du schreibst steht da.
    Man kann natürlich Teile debuggen. Zum Beispiel kannst du natürlich DataBindings debuggen sobald diese irgendwelche Properties von dir aufrufen. Fehlerhafte DataBindings bekommste nur in der Debug-Konsole mit.
    Ebenso kannst du natürlich eigene Controls usw. debuggen. Events bzw. Commands sind selbstverständlich ganz normales VB.NET/C# Coding.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Da der XAML Code ja nur das XML-Serialisierte GUI enthält, kannst du (auch wenn es Aufwand ist) den Xaml Code auch in C# Code übersetzten und dir deine UI-Elemente über deinen C#-Code herstellen.

    Also statt dem XAML-Code

    XML-Quellcode

    1. <Button x:Name=btnTest" Width="50" Height="20" Content="Test" />

    kannst du auch (sofern du das Grund-Panel benannt hast) auch folgendes machen:

    C#-Quellcode

    1. public partial class MainWindow : Window
    2. {
    3. private Button btnTest2;
    4. public MainWindow()
    5. {
    6. InitializeComponent();
    7. this.btnTest2 = new Button()
    8. {
    9. Name = "btnTest2",
    10. Width = 50.0,
    11. Height = 20.0,
    12. Content = "Test2"
    13. };
    14. this.gridBasic.Children.Add(this.btnTest2);
    15. }
    16. }


    Damit kannst du auch dein UI debuggen, solltest du aber nur verwenden, wenn dein UI fest steht und es nur um die Logik geht (wie @thefiloe bereits gesagt hat: DataBindung)

    Hoffe ich konnte helfen :D
    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    ​XAML ist deklarativ. Da läuft nix ab. Das was du schreibst steht da.


    so gesehen ist es vb.net oder c# auch. das was du schreibst steht da... so könnte man jeden Debugger wegschmeißen.

    Leider ist es nun mal so, dass teilweise durch wpf template usw. die Gestaltung sowie das lesen recht umständlich wird.

    EugenIS schrieb:

    so gesehen ist es vb.net oder c# auch. das was du schreibst steht da [...]
    Du hast aber schon verstanden, was @thefiloe Dir damit gesagt hat, oder?
    XAML designt Dein Zeugs, das ist statisch und das sieht dann auch genauso aus, wie es da steht. Da wird nichts an Code durchlaufen o.ä. (Bindings zu Properties im VM mal ausgelassen).
    Dein Code hingegen wird entsprechend durchlaufen und dort kannste dann auch entsprechend debuggen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Nochmal lesen @EugenIS. Man beachte deklarativ. Das ist C# oder VB.NET überhaupt nicht.
    PS: Man kann auch Templates, Styles und Resourcen in WPF in extra Files auslagern. So ist es ja nicht.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.