Entwickler-Ecke
WPF / Silverlight - Button styles
Greenberet - Sa 28.07.07 10:36
Titel: Button styles
Hi,
schon bin ich bei meinem nächsten 2 Problemen^^
- wie mach ich es, dass der button eine andere form bekommt? in etwa so wie hier
(Icon ignorieren )
- jeder button hat ja einen blauen border der orange wird wenn man die maus über den button bewegt. Ich hab versucht die farben mit BorderBrush zu verändern, nur anscheinend sind das andere Properties. weiß jemand welche das sind?
Christian S. - Sa 28.07.07 11:02
Hallo!
Wenn DU mal in der MSDN Library schaust, wirst Du unter "Button control template" (oder so ähnlich) den XAML Code finden, welcher für den Button zuständig ist.
Wenn Du den in Resources einfügst, kannst Du das Aussehen der Buttons beeinflussen. Nimmst Du die Resources-Sektion des Windows, so werden alle Buttons darin gestylt, Du kannst aber auch die Resourcen nur eines Buttons nehmen, dann wird nur dieser gestylt.
Weitere Möglichkeit: Du gibst dem Style einen Key (x:Key="foobar") und kannst ihn dann einzelnen Butttons zuweisen (Style="{DynamicResource foobar}").
Grüße
Christian
//edit: Ach ja, an das Control Template kommst Du auch über Blend, wenn Du dort rechts auf eine Komponente klickst und dann "Edit Control Parts (template) -> Edit a copy" wählst.
Greenberet - Sa 28.07.07 12:39
ich hab jetzt mal versucht einfach mal testweise ein rechteck das mit orange gefüllt ist darzustellen für den button.
aber sobald ich das setz, wird der button nicht dargestellt
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| <Style x:Key="CXMButton" TargetType="{x:Type Button}"> <Setter Property="Background" Value="{StaticResource ButtonBackgroundBrush}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Rectangle Fill="Orange" /> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property="BitmapEffect"> <Setter.Value> <BitmapEffectGroup> <OuterGlowBitmapEffect GlowColor="Goldenrod" GlowSize="5"/> </BitmapEffectGroup> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> |
Christian S. - Sa 28.07.07 13:12
Das hier tut's bei mir:
XML-Daten
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| <Window x:Class="WindowsApplication4.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowsApplication4" Height="300" Width="300" > <Window.Resources> <SolidColorBrush x:Key="ButtonBackgroundBrush" Color="#DDD" />
<Style x:Key="CXMButton" TargetType="{x:Type Button}"> <Setter Property="Background" Value="{StaticResource ButtonBackgroundBrush}"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Rectangle Fill="Orange" /> </ControlTemplate> </Setter.Value> </Setter> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter Property="BitmapEffect"> <Setter.Value> <BitmapEffectGroup> <OuterGlowBitmapEffect GlowColor="Goldenrod" GlowSize="5"/> </BitmapEffectGroup> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> </Window.Resources>
<Grid> <Button Style="{DynamicResource CXMButton}" Width="200" Height="100" />
</Grid> </Window> |
Allerdings würde ich anstatt eines Rectangle eine Border nehmen, weil Du da dann noch den ContentPresenter rein packen kannst.
Greenberet - Sa 28.07.07 16:27
ok hab den fehler gefunden, durch das überschreiben des controltemplates wird die größe nicht mehr dynamisch zum context erstellt.
vielen danke für deine hilfe
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!