Designer & Debug sehen komplett anders aus! Warum?

  • WPF

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

    Designer & Debug sehen komplett anders aus! Warum?

    Im Designer:


    Wenn ich das Programm starte:



    Kann mir jemand die Ursache dafür erklären? Ich liebe WPF, aber dieses Problem macht mich verrückt. Der Designer zeigt nicht exakt an, was wirklich zu sehen ist. Man muss dann unsauber fummeln und das ist einfach nur belastend und behindert mich beim Programmieren. Gibt es dafür irgendeine Einstellung welche man umstellen kann? Ich nehme sogar Designer Performance in Kauf, wenn das Resultat wenigstens richtig aussieht.

    Ich hoffe, jemand kann mir diese Frage beantworten, da ich nicht glauben kann, dass das so gewollt ist.

    ErfinderDesRades schrieb:

    Jdfs. ich kann das problem nicht nachstellen.


    Schau mal auf den Button unten in der rechten Ecke.

    (Falls du das GIF nicht siehst: i.gyazo.com/14fefea49ea13beade0ed435621c921f.gif)
    Im Designer hat er einen Abstand zum Rand, beim der Debug / Release Applikation jedoch nicht mehr. Das kannst du sicherlich einfach nachstellen, da kein Code-Behind involviert ist und der Button ist auch einfach nur von der Toolbar reingezogen. Irgendwie hat WPF da seine Schwächen.

    @Nofear23m Du bist meines Wissens ziemlich erfahren in diesem Gebiet, was meinst Du? Gibt es dazu eine Lösung, eine Erklärung oder muss man damit leben und es einsehen? Denn es kann wirklich stören.
    Hallo

    Was dein GIF betrifft ist die Sache für mich klar. Du hastg ein "borderless" Window also ohne Rahmen. Der Designer stellt ein Window aber nicht ohne Rahmen da. Sprich, im Designer siehst du den Rahmen meines Wissens nach immer und zur Laufzeit dann nicht was hier den Unterschied macht.

    Was deine Screenshots im Eingangspost betrifft kann ich ohne Code nichts sagen. Ich tippe ins blaue auf ein Margin aber da dies ja ein Button-Template ist wie es scheint müsste man dieses mal sehen.
    Poste doch mal den Code, dann kann man sicher etwas mehr sagen.

    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. ##

    @Nofear23m Ich versuche Dir mal mein Problem zu erklären (mit Code). Mir wird einiges klarer durch deine Antwort, aber noch ganz verstanden habe ich es nicht. Mal hier ein anderes Beispiel:

    Button im Designer:


    Button im Debug (so sieht es aber nicht aus, wenn ich den Button BISSCHEN größer mache):


    Code vom Buttonstyle:

    XML-Quellcode

    1. ​<Window.Resources>
    2. <ImageBrush x:Key="mouse_Over" ImageSource="Resources/Over.png" Stretch="None"/>
    3. <ImageBrush x:Key="mouse_Down" ImageSource="Resources/Down.png" Stretch="None"/>
    4. <ImageBrush x:Key="mouse_None" ImageSource="Resources/Default.png" Stretch="None"/>
    5. <Style x:Key="FocusVisual">
    6. <Setter Property="Control.Template">
    7. <Setter.Value>
    8. <ControlTemplate>
    9. <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
    10. </ControlTemplate>
    11. </Setter.Value>
    12. </Setter>
    13. </Style>
    14. <Style x:Key="btnStyle1" TargetType="{x:Type Button}">
    15. <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
    16. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
    17. <Setter Property="BorderThickness" Value="1"/>
    18. <Setter Property="Padding" Value="1"/>
    19. <Setter Property="Template">
    20. <Setter.Value>
    21. <ControlTemplate TargetType="{x:Type Button}">
    22. <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
    23. <ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    24. </Border>
    25. <ControlTemplate.Triggers>
    26. <Trigger Property="IsDefaulted" Value="true">
    27. <Setter Property="Background" TargetName="border" Value="{StaticResource mouse_None}"/>
    28. </Trigger>
    29. <Trigger Property="IsMouseOver" Value="true">
    30. <Setter Property="Background" TargetName="border" Value="{StaticResource mouse_Over}"/>
    31. </Trigger>
    32. <Trigger Property="IsPressed" Value="true">
    33. <Setter Property="Background" TargetName="border" Value="{StaticResource mouse_Down}"/>
    34. </Trigger>
    35. </ControlTemplate.Triggers>
    36. </ControlTemplate>
    37. </Setter.Value>
    38. </Setter>
    39. </Style>
    40. </Window.Resources>


    Button XAML:

    XML-Quellcode

    1. <Button Content="Hey" BorderThickness="0" Style="{DynamicResource btnStyle1}" Foreground="#FFFFC500" Width="100" Height="27" Margin="157,158,100,234">
    2. <Button.Background>
    3. <ImageBrush ImageSource="Resources/Default.png" Stretch="None"></ImageBrush>
    4. </Button.Background>
    5. </Button>


    Kompletter Code zum nachstellen (zu lang):
    pastebin.com/Hr1aeeSa

    Das ist glaube ich das Beste, was ich bereitstellen kann.

    Vielen Dank für jede Hilfe die ich kriegen kann.
    Hallo

    Also ich hab deinen Code mal genommen und statt den Bildern (die habe ich ja nicht) einfach einen Solidbrush eingesetzt. Wozu eigendlich Bilder? Egal.

    Und es funzt alles. Gesetzt den Fall....

    Nofear23m schrieb:

    Ich tippe ins blaue auf ein Margin

    Man nimmt das Margin raus.

    Also

    XML-Quellcode

    1. <Button Content="Hey" BorderThickness="0" Style="{DynamicResource btnStyle1}" Foreground="#FFFFC500" Width="100" Height="27">
    2. <Button.Background>
    3. <ImageBrush ImageSource="Resources/Default.png" Stretch="None"></ImageBrush>
    4. </Button.Background>
    5. </Button>


    Sowas passiert wenn man mit dem Designer über Drag&Drop arbeitet anstatt den XAML zu schreiben und die ItelliSense zu nutzen.
    Ich weis, der Designer mit seiner Toolbox verleitet dazu und man ist es vieleicht aus WinForms gewohnt, aber das ist bei XAML eine schlechte Idee.
    Ist aber glaube ich eines der ersten Sachen auf die ich explizit in meinen Videos hinweise. Ist glaube ich gleich im ersten Kapitel enthalten.

    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. ##