Problem

  • WPF

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von SeriTools.

    Heyho,
    ich muss noch kurz einfügen, dass ich mich noch nicht wirklich lange mit WPF beschäftige, also reißt mir nicht gleich den Kopf ab ^^

    Ich hab eine Form erstellt, welche sich verschieben und vergrößern lässt, jedoch hab ich das Problem, wenn ich ein Button über Ein Rechteck lege, dass dann der Button etc. nicht mehr funktioniert ( sprich die Events funktionieren nicht mehr)

    XML-Quellcode

    1. <Window x:Class="MainWindow"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. Height="725" Width="925" WindowStyle="None" Background="#FF393C39" Loaded="Window_Loaded_1">
    5. <WindowChrome.WindowChrome>
    6. <WindowChrome ResizeBorderThickness="8,8,8,8" CaptionHeight="28" />
    7. </WindowChrome.WindowChrome>
    8. <Grid>
    9. <TabControl x:Name="TabControl1" HorizontalAlignment="Left" Height="169" Margin="77,194,0,0" VerticalAlignment="Top" Width="496">
    10. <TabItem Header="TabItem" Visibility="Hidden">
    11. <Grid Background="#FFE5E5E5">
    12. <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="43" Margin="83,45,0,0" Stroke="Black" VerticalAlignment="Top" Width="173"/>
    13. </Grid>
    14. </TabItem>
    15. <TabItem Header="TabItem" Visibility="Hidden">
    16. <Grid Background="#FFE5E5E5"/>
    17. </TabItem>
    18. </TabControl>
    19. <Label x:Name="Label1" Content="Meine Anwendungen" HorizontalAlignment="Left" Margin="100,41,0,0" VerticalAlignment="Top" FontFamily="Narkisim" FontSize="24" Foreground="White"/>
    20. <Label x:Name="Label2" Content="Erweiterungen" HorizontalAlignment="Left" Margin="331,41,0,0" VerticalAlignment="Top" Foreground="#FFB5B5B5" FontFamily="Narkisim" FontSize="24"/>
    21. <Rectangle Height="30" Margin="2,2,2,0" Stroke="#FF1B1B1B" VerticalAlignment="Top" RadiusX="5" RadiusY="5">
    22. <Rectangle.Fill>
    23. <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
    24. <GradientStop Color="#FF212020" Offset="1"/>
    25. <GradientStop Color="#FF2C2C2C"/>
    26. </LinearGradientBrush>
    27. </Rectangle.Fill>
    28. </Rectangle>
    29. <StackPanel
    30. Orientation="Horizontal"
    31. Margin="0,10,10,0"
    32. HorizontalAlignment="Right"
    33. VerticalAlignment="Top"
    34. Background="White" UseLayoutRounding="False">
    35. <TextBlock
    36. x:Name="ChangeViewButton"
    37. Text="2"
    38. FontFamily="Webdings"
    39. Foreground="Gray"
    40. Margin="0"
    41. VerticalAlignment="Top"
    42. HorizontalAlignment="Right"
    43. MouseLeftButtonUp="ChangeViewButtonMouseLeftButtonUp" />
    44. <TextBlock
    45. x:Name="MinimizeButton"
    46. Text="0"
    47. FontFamily="Webdings"
    48. Foreground="#AAAAAA"
    49. Margin="5,0,0,0"
    50. HorizontalAlignment="Right"
    51. VerticalAlignment="Top"
    52. MouseLeftButtonUp="MinimizeButtonMouseLeftButtonUp" />
    53. <TextBlock
    54. x:Name="MaximizeButton"
    55. Text="1"
    56. FontFamily="Webdings"
    57. Foreground="#AAAAAA"
    58. Margin="5,0,0,0"
    59. HorizontalAlignment="Right"
    60. VerticalAlignment="Top"
    61. MouseLeftButtonUp="MaximizeButtonMouseLeftButtonUp" />
    62. <TextBlock
    63. x:Name="CloseButton"
    64. Text="r"
    65. FontFamily="Webdings"
    66. Foreground="#AAAAAA"
    67. Margin="5,0,0,0"
    68. HorizontalAlignment="Right"
    69. VerticalAlignment="Top" />
    70. </StackPanel>
    71. <Canvas HorizontalAlignment="Left" Height="28" Margin="704,4,0,0" VerticalAlignment="Top" Width="54"/>
    72. <WindowsFormsHost HorizontalAlignment="Left" Height="22" Margin="724,7,0,0" VerticalAlignment="Top" Width="64"/>
    73. <Button Content="Button" HorizontalAlignment="Left" Height="9" Margin="750,13,0,0" VerticalAlignment="Top" Width="27"/>
    74. </Grid>
    75. </Window>


    VB.NET-Quellcode

    1. Option Strict On
    2. Class MainWindow
    3. Dim brc As New BrushConverter
    4. Private Sub Label1_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Label1.MouseLeftButtonDown
    5. TabControl1.SelectedIndex = 0
    6. Label1.Foreground = Brushes.White
    7. Label2.Foreground = CType(brc.ConvertFromString("#FFB5B5B5"), Brush)
    8. End Sub
    9. Private Sub Label2_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles Label2.MouseLeftButtonDown
    10. TabControl1.SelectedIndex = 1
    11. Label2.Foreground = Brushes.White
    12. Label1.Foreground = CType(brc.ConvertFromString("#FFB5B5B5"), Brush)
    13. End Sub
    14. Private Sub CloseButtonMouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs)
    15. Close()
    16. End Sub
    17. Private Sub MaximizeButtonMouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs)
    18. WindowState = WindowState.Maximized
    19. End Sub
    20. Private Sub ChangeViewButtonMouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs)
    21. WindowState = WindowState.Normal
    22. End Sub
    23. Private Sub MinimizeButtonMouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs)
    24. WindowState = WindowState.Minimized
    25. End Sub
    26. Private Sub MinimizeButton_MouseEnter(sender As Object, e As MouseEventArgs) Handles MinimizeButton.MouseEnter
    27. MinimizeButton.Background = CType(brc.ConvertFromString("#4A4A4A"), Brush)
    28. MsgBox("Test")
    29. End Sub
    30. Private Sub Button_MouseEnter_1(sender As Object, e As MouseEventArgs)
    31. MsgBox("Test")
    32. End Sub
    33. End Class


    Das ganze sieht ungefähr so aus:
    Hallo,

    ich hätte dir gern geholfen, aber leider kann ich gerade
    es nicht austesten, weil gerade mein Visual Studio installiert wird.

    P.S: Wenn du eine präziere Überschrift geben würdest, wie
    'Event bei Button funktioniert bei selbst gezeichneten Fenster nicht'
    oder Ähnliches, würden dir vielleicht mehr Leute helfen, weil sie
    dann mehr Informationen auf den ersten Blick bekommen.

    MFG

    Alex-Digital :D
    Außerdem wieso verwendest du leere Canvas, Windowsformshost(was du so oder so sofort entfernen solltest),...
    Auch ja und wenn du etwas über einen Button drüber legst, ist es klar, dass du den Button nicht clicken kannst. Du kannst aber Templates für den Button verwenden.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Hab das Problem gefunden:

    XML-Quellcode

    1. <WindowChrome.WindowChrome>
    2. <WindowChrome ResizeBorderThickness="8,8,8,8" CaptionHeight="28" />
    3. </WindowChrome.WindowChrome>

    Wenn ich diesen Code entferne, dann funktionieren alle Events der Button, bloß hat dieses leider mehrere ungewollte Folgen für mich, so wird z.B. wieder der unschöne "gläsener Rand" hinzugefügt. Der Vorteil für mich war halt vorher, dass ich mit diesem Code den Rand nicht mehr hatte, und ich die Form in jegliche Richtung verschieben & vergrößern/verkleinern konnte.

    Hier mal 2 Bilder von dem Unterschied:

    Mit Rand
    Ohne Rand

    Würde mich freuen, wenn da jemand ne Lösung für mich hätte.