Entwickler-Ecke

WPF / Silverlight - Menüpunkt ohne Rahmen bei MouseEnter


nepo - So 26.06.11 17:33
Titel: Menüpunkt ohne Rahmen bei MouseEnter
Hallo,

ich bin noch ziemlich neu in Sachen C# und wollte mich als erstes mit dem Design bei WPF/XAML beschäftigen.
Nun zu meinem Problem:

Ich hab mir ein Menü oben angelegt und habe ihm einen Hintergrund als Bild gegeben. Wenn ich nicht mit der Maus drüber bin haben die einzelnen Punkte auch keinen Rahmen. Wenn ich nun aber mit der Maus auf einen Menüpunkt fahre dann habe ich immer einen Rahmen und egal was ich mache er ist immer da.
Meine Frage ist nun was ich machen kann damit es keinen Rahmen mehr gibt bzw. dieser eine andere Farbe hat.

Zur Veranschaulichung habe ich mal ein paar Bilder erstellt:
Maus nicht über Menüpunkt:
[url=http://www.directupload.net]user defined image[/URL]
Maus ist über Menüpunkt:
[url=http://www.directupload.net]user defined image[/URL]

Hier der XAML-Code:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
<Grid>
        <Menu Height="23" HorizontalAlignment="Stretch" Name="menu1" VerticalAlignment="Top" >
            <Menu.Background>
                <ImageBrush ImageSource="/WpfApplication1;component/Images/Menubackground.png" />
            </Menu.Background>
            <MenuItem Header="Test 1" 
                      MouseEnter="MenuItem_MouseEnter"
                      MouseLeave="MenuItem_MouseLeave"
                      Click="MenuItem_Click" 
                      BorderThickness="0"
                      DataContext="{Binding}" 
                      Name="cmdMenuItem1" > 
                <MenuItem Header="Test 3" />
            </MenuItem>
        </Menu>
    </Grid>


Ich hoffe ihr könnt mir helfen!


Kha - So 26.06.11 20:30

:welcome: in der EE!

Dafür musst du wahrscheinlich das ControlTemplate bearbeiten, was am besten mit Blend funktioniert. So oder so aber beileibe kein Anfänger-Thema, ich würde es mir für später aufsparen ;) .

PS: Suche im MSDN LINEARGRADIENTBRUSH


nepo - So 26.06.11 21:17

Danke erstmal für die Antwort.

Mit dem was ich mir jetzt über deinen Link durchgelesen habe kann man ja ein ganzen Buch füllen.
Gibt es tatsächlich keine simplere Variante eine farbige Border bzw. transparente Border zu erstellen?

Ich hatte es schon im MouseEnter-Event versucht aber da bleibt ja gleich ganz ohne Wirkung.


C#-Quelltext
1:
2:
3:
4:
5:
6:
 private void MenuItem_MouseEnter(object sender, MouseEventArgs e)
        {
            cmdMenuItem1.Background = Brushes.Yellow;
            cmdMenuItem1.BorderBrush = Brushes.Orange;       // <-- Keine veränderung
            cmdMenuItem1.BorderThickness = new Thickness(3); // <-- Ebenfalls keine Veränderung
        }


Kha - So 26.06.11 21:25

Das PS war nicht auf den Rahmen, sondern deinen ImageBrush bezogen :) . Und ja, schon mit einzelnen Themen von WPF kann man Bücher füllen.


nepo - Mo 27.06.11 00:42

Hab mir Blend 4 grad mal angeschaut. Gibt es dafür auch eine Alternative die nicht gleich 700€ kostet?