C# Standardeffekt bei Buttons verhindern

UID0

Lt. Commander
Registriert
Juli 2010
Beiträge
1.050
Ich möchte den Standardeffekt, der beim Drüberfahren über einen Button entsteht verhindern bzw. anpassen. Wie kann ich verhindern, dass dieses hässliche Blau nicht erscheint?
 

Anhänge

  • Unbenannt-2.jpg
    Unbenannt-2.jpg
    18,4 KB · Aufrufe: 229
Wie überladen?
 
Edit: überschreiben mein ich wohl :D , also überschreibe das Mouse-Over Event und mach nichts darin.
 
Zuletzt bearbeitet:
Das heißt doch in C# nicht wirklich überladen oder? Überladen ist, wenn die gleiche Methode mehrere Parameterlisten hat. Überschreiben ist hier das Stichwort.

Nicht dass ich klugscheißen will, aber sonst googlet der TE nach dem falschen Stichwort.
 
Ich verstehe das nicht wirklich. Ein Beispiel wäre nicht schlecht. Info: Ich versuche das ganze in WPF zu realisieren.
 
Also ich verstehe nur noch Bahnhof... Habe erst gestern mit WPF angefangen.
Im Anhang befindet sich das Projekt. Ich hoffe jemand könnte mir zum Verständnis, es an dem konkreten Beispiel aufzeigen. :)
 

Anhänge

Chriss000 schrieb:
Also ich verstehe nur noch Bahnhof... Habe erst gestern mit WPF angefangen.
Im Anhang befindet sich das Projekt. Ich hoffe jemand könnte mir zum Verständnis, es an dem konkreten Beispiel aufzeigen. :)

So funktioniert das leider nicht ;) Du musst schon ein wenig mehr Bereitschaft zeigen :D
Das Web ist voll von Tutorials über Templating und Styling von WPF Controls.

Du sagst, du hast erst gestern (vorgestern) mit WPF angefangen. Ich empfehle dir nicht einfach drauf los zu klicken, sondern dich erstmal ausreichend über WPF "warm zu lesen".
Zwar kannst du es genauso benutzen wie Windows Forms, wirst dann aber garantiert nicht das volle Potential ausnutzen (können).
WPF mag dir kompliziert erscheinen, aber irgendwann merkst du, wie mächtig es ist :)

Wenn ich mich recht entsinne, bist du noch Schüler. Frag an deiner Schule nach, ob ihr MSDNAA lizensiert habt. Falls ja, lad dir dort Expression Blend runter. Google selbst, was das ist. Ich kann dir nur sagen, dass Tool ist Gold wert.
Falls du keinen Zugriff über MSDNAA kriegen kannst, könntest du dein Glück noch über www.dreamspark.com versuchen, wobei ich nicht sicher bin, ob sich das Angebot nur an Studenten oder auch an Schüler richtet. Erfragen oder ausprobieren.

Wie auch immer, was du suchst nennt sich Visual Style. Für den stink normalen Button sieht das so aus:

Code:
<ResourceDictionary
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
	xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
	<Style x:Key="ButtonFocusVisual">
		<Setter Property="Control.Template">
			<Setter.Value>
				<ControlTemplate>
					<Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>
	<!-- Resource dictionary entries should be defined here. -->
	<LinearGradientBrush x:Key="ButtonNormalBackground" EndPoint="0,1" StartPoint="0,0">
		<GradientStop Color="#F3F3F3" Offset="0"/>
		<GradientStop Color="#EBEBEB" Offset="0.5"/>
		<GradientStop Color="#DDDDDD" Offset="0.5"/>
		<GradientStop Color="#CDCDCD" Offset="1"/>
	</LinearGradientBrush>
	<SolidColorBrush x:Key="ButtonNormalBorder" Color="#FF707070"/>
	<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
		<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
		<Setter Property="Background" Value="{StaticResource ButtonNormalBackground}"/>
		<Setter Property="BorderBrush" Value="{StaticResource ButtonNormalBorder}"/>
		<Setter Property="BorderThickness" Value="1"/>
		<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
		<Setter Property="HorizontalContentAlignment" Value="Center"/>
		<Setter Property="VerticalContentAlignment" Value="Center"/>
		<Setter Property="Padding" Value="1"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type Button}">
					<Microsoft_Windows_Themes:ButtonChrome x:Name="Chrome" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" RenderMouseOver="{TemplateBinding IsMouseOver}" RenderPressed="{TemplateBinding IsPressed}" RenderDefaulted="{TemplateBinding IsDefaulted}" SnapsToDevicePixels="true">
						<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
					</Microsoft_Windows_Themes:ButtonChrome>
					<ControlTemplate.Triggers>
						<Trigger Property="IsKeyboardFocused" Value="true">
							<Setter Property="RenderDefaulted" TargetName="Chrome" Value="true"/>
						</Trigger>
						<Trigger Property="ToggleButton.IsChecked" Value="true">
							<Setter Property="RenderPressed" TargetName="Chrome" Value="true"/>
						</Trigger>
						<Trigger Property="IsEnabled" Value="false">
							<Setter Property="Foreground" Value="#ADADAD"/>
						</Trigger>
					</ControlTemplate.Triggers>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>
</ResourceDictionary>

Die Styles kriegst du entweder über MSDN oder du extrahierst sie selbst (Google hilft hier weiter). Blend kann die ebenfalls extrahieren.

Das Dictionary kannst du entweder lokal über
Code:
<Window .....>
  <Window.Resources>
    <ResourceDictionary>.
      ...
    </ResourceDictionary>
  <Window.Resources>

Oder in der App.xaml applikationsweit einbinden.

Code:
  <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
            	<ResourceDictionary Source="pfad.zur.xaml.datei"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

Anwenden tust du einen Style über das Property (Achtung) Style, z.B. so:

Code:
<Button Style="{DynamicResource ResourceKey}" />

Gruß
 
Natürlich bin ich bereit zu lernen. :) Dafür frage ich ja. :D Nur die Tutorials, die ich bisher gefunden habe, halfen mir nicht wirklich weiter...
Ich probiere morgen mal damit umzugehen. Ich lade mir gerade die Testversion runter...
 
Zurück
Oben