none
Style Probleme Button Background Color RRS feed

  • Frage

  • Hallo zusammen,

    ich habe einen Button dem ich eine neue Farbe mit  Background ="Aqua" gegeben habe, so nun zu meinem Probrlem. Wenn ich mit dem Cursor über den Button gehe nimmt er wieder die Systemfarbe an und wenn der Button den Focus bekommt beginnt er zu pulsieren zwischen der Systemfarbe und meiner.

    Frage wie kann man das abstellen, der Button soll meine Farbe in allen Zutänden haben.

    Danke und Gruß Dieter

    Samstag, 5. Juni 2010 13:48

Antworten

  •  
    Frage wie kann man das abstellen, der Button soll meine Farbe in allen Zutänden haben.

    So etwas wird ein Windows-gewohnter Bediener nicht erwarten. Wenn das wirklich gewünscht ist, warum nutzt du dann nicht gleich ein Label mit passendem Background oder auch ein von ButtonBase abgeleitetes eigenes Steuerelement?


    --
    Viele Gruesse

    Peter

    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:40
    Samstag, 5. Juni 2010 18:42
  • Hi Dieter,

    ich sehe das ähnlich wie Peter.

    Wenn es Dir aber darum geht, einen statischen/unveränderlichen "Button" zu bekommen, so könntest Du ein nahezu beliebiges Control hernehmen und einfach auf MouseDown/Up reagieren, um den Click abzufangen. Wenn es der Button selbst sein soll, wirst Du nicht um das Überschreiben des ControlTemplates herumkommen. Beispiele dazu findest Du aber haufenweise im Web.


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Sonntag, 6. Juni 2010 07:34
  •  

    Also mir fällt auch nur die Möglichkeit ein das Controltemplate zu überschreiben.

    Vielleicht ein kurzes Beispiel:

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight">
      <Window.Resources>
        <Style TargetType="{x:Type Button}" x:Key="UnchangeableBackgroundStyle">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="Button">
                <Border x:Name="Border"
                 CornerRadius="3"
                 BorderBrush="{TemplateBinding BorderBrush}"
                 BorderThickness="{TemplateBinding BorderThickness}"
                 Padding="{TemplateBinding Padding}"
                 Background="{TemplateBinding Background}">
                  <ContentPresenter HorizontalAlignment="Center"
                       VerticalAlignment="Center"
                       Margin="2"
                       RecognizesAccessKey="True"/>
                </Border>
                <ControlTemplate.Triggers>
                  <!-- perhaps events you want to give the user a feedback-->
                  <Trigger Property="IsMouseOver" Value="true">
                    <Setter TargetName="Border" Property="BorderBrush" Value="Blue"/>
                  </Trigger>
                  <Trigger Property="IsPressed" Value="true">
                    <Setter TargetName="Border" Property="BorderBrush" Value="Blue"/>
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </Window.Resources>
      <StackPanel>
        <Button Content="Standard Control Template" Background="Aqua" Padding="5" Margin="5"/>
        <Button Content="Verändertes Control Template" Background="Aqua" Padding="5" Margin="5" Style="{StaticResource UnchangeableBackgroundStyle}"/>
      </StackPanel>
    </Window>
    
    Hoffe das hilft.

    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Sonntag, 6. Juni 2010 11:50
  • Vielleicht hilft dir das noch weiter:

    http://stevehorsfield.wordpress.com/2009/08/12/viewing-default-wpf-control-templates-free-tool/

    Dort kannst du dir das Default-Template der verschiedenen Controls ausschauen.

    Meins vom Button zum Beispiel:

    <ControlTemplate TargetType="ButtonBase" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
     <mwt:ButtonChrome Background="{TemplateBinding Panel.Background}" BorderBrush="{TemplateBinding Border.BorderBrush}" RenderDefaulted="{TemplateBinding Button.IsDefaulted}" RenderMouseOver="{TemplateBinding UIElement.IsMouseOver}" RenderPressed="{TemplateBinding ButtonBase.IsPressed}" Name="Chrome" SnapsToDevicePixels="True">
     <ContentPresenter RecognizesAccessKey="True" Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" Margin="{TemplateBinding Control.Padding}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
     </mwt:ButtonChrome>
     <ControlTemplate.Triggers>
     <Trigger Property="UIElement.IsKeyboardFocused">
      <Setter Property="mwt:ButtonChrome.RenderDefaulted" TargetName="Chrome">
      <Setter.Value>
       <s:Boolean>True</s:Boolean>
      </Setter.Value>
      </Setter>
      <Trigger.Value>
      <s:Boolean>True</s:Boolean>
      </Trigger.Value>
     </Trigger>
     <Trigger Property="ToggleButton.IsChecked">
      <Setter Property="mwt:ButtonChrome.RenderPressed" TargetName="Chrome">
      <Setter.Value>
       <s:Boolean>True</s:Boolean>
      </Setter.Value>
      </Setter>
      <Trigger.Value>
      <s:Boolean>True</s:Boolean>
      </Trigger.Value>
     </Trigger>
     <Trigger Property="UIElement.IsEnabled">
      <Setter Property="TextElement.Foreground">
      <Setter.Value>
       <SolidColorBrush>#FFADADAD</SolidColorBrush>
      </Setter.Value>
      </Setter>
      <Trigger.Value>
      <s:Boolean>False</s:Boolean>
      </Trigger.Value>
     </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>

     

    Gruß, Klaus

    Sonntag, 6. Juni 2010 14:27
  • Hi Dieter,

    je nach verwendetem System können ControlTemplates variieren; d.h., auf einem XP-Rechner sieht ein Button anders aus, als auf einem Win7-Rechner.

    Wenn Du sicherstellen möchtest, dass ein Control unter allen Betriebssystemen identisch ausschaut, ist das Überschreiben des ControlTemplates daher sinnvoll, vor allem auch, weil Du nur dann die vollständige Kontrolle über das Erscheinungsbild hast.In Klaus' Beispiel siehst Du auch, dass ein Chrome verwendet wird; dieser wiederum ist für den Effekt verantwortlich, den Du zu Beginn genannt hast.
    Wenn Du nun den Style hernimmst, der auf Deinem System gültig ist (oder auch den, den Klaus hergezeigt hat), kannst Du ganz einfach die Teile entfernen, die unerwünscht sind (z.B. den Chrome) und ggf. hinzufügen, was Du noch benötigst, bzw. Dinge ändern (wie die Farben).



    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Montag, 7. Juni 2010 07:01
  • Hi Dieter,

    ich beschäftige mich erst seit knapp einem Jahr mit WPF, kann aber Deinen "Frust" durchaus nachvollziehen - die Lernkurve von WPF ist ziemlich steil und hat mich auch mächtig Nerven gekostet (und tut's immer noch!). :-)

    Der von Klaus hier gezeigte "Code" ist wohl lediglich das, was auf seinem System als das Standardtemplate des Button Controls hinterlegt ist (sieht auf meinem XP-System übrigens ganz anders aus). In diesen Templates sind die Werte der Setters oft in expliziter Form dargestellt; d.h., anstelle eines <Setter Property="mwt:ButtonChrome.RenderDefaulted" TargetName="Chrome" Value="True"> findet sich halt die "Langversion" mit expliziter Typdeklaration. Damit kannst Du das Template gleich ganz anders lesen oder (innerlich) verkürzen. Über den enthaltenen Chrome (der aus dem Aero-Theme stammt) werden einige Dinge bereitgestellt, die Du aber durchaus auch löschen kannst, bzw. auch musst, wenn's Dir darum geht, dass Dein Button unabhängig von den System-/Theme-Einstellungen immer identisch aussieht. Auch wichtig ist, dass in den Standardtemplates die meisten Werte von Elementen nicht direkt auf ein Element angewendet werden, sondern vielmehr in Form von Property-Settern hinterlegt sind - weil sie lediglich Vorgabewerte darstellen sollen. Würden Sie in gleicher Art und Weise direkt auf die jew. Elemente angewendet, wären Sie fix, d.h. wenn Du innerhalb eines abgeleiteten Styles diese über einen Trigger setzen würdest, hätten sie keinen Effekt, weil die Präzedenz des im urspr. Templates hinterlegten Wertes höher ist - ein beliebter Stolperstein übrigens.

    Was Bücher anbelangt - für den Einstieg sind sie sicher sehr sinnvoll, aber wenn ich mir meine "Bibliothekkurve" der letzten 15 Jahre anschaue, sehe hier eine stark abfallende Kurve. Soll heißen, ich kaufe immer weniger Bücher (zu WPF habe ich gerade mal 3), weil es so viele Resourcen im Web gibt. Auch die MSDN stellt eine sehr guter Quelle an Informationen zum Thema - such einfach mal nach "msdn wpf".

    Der Umstand, dass Du auf eine augenscheinlich "simple" Frage so "komplizierte" Antworten bekommst liegt wohl eher daran, dass Du mit Deinem Wunsch nach einer Verhaltensweise - entgegen der von einem "normalen" Benutzer erwarteten - das Klugschwätzer-Gen aktiviert hast. ;-)

    Schau Dir doch mal diesen Thread an - da habe ich mal einen Button-Style gebastelt, der die Hintergrundfarbe des Buttons ändert, wenn sich die Maus über ihm befindet. Bin mir sicher, dass Du darüber hinaus unendlich viele Beispiele im Web zum gleichen Thema findest.


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Dienstag, 8. Juni 2010 08:34
  • Hi Dieter,

    äh, "WPFWörterbuch"? Ich vermute mal, Du meinst Du ein ResourceDictionary. Dieses kannst Du entweder direkt innerhalb von App.Xaml (C#) oder Application.Xaml (VB) hinterlegen, oder Du hinterlegst dort eine Referenz auf eine Datei, innerhalb derer sich dann die Definitionen befinden. Schau dazu mal in die MSDN zum Thema .


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:31
    Samstag, 12. Juni 2010 12:02

Alle Antworten

  •  
    Frage wie kann man das abstellen, der Button soll meine Farbe in allen Zutänden haben.

    So etwas wird ein Windows-gewohnter Bediener nicht erwarten. Wenn das wirklich gewünscht ist, warum nutzt du dann nicht gleich ein Label mit passendem Background oder auch ein von ButtonBase abgeleitetes eigenes Steuerelement?


    --
    Viele Gruesse

    Peter

    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:40
    Samstag, 5. Juni 2010 18:42
  • Hi Dieter,

    ich sehe das ähnlich wie Peter.

    Wenn es Dir aber darum geht, einen statischen/unveränderlichen "Button" zu bekommen, so könntest Du ein nahezu beliebiges Control hernehmen und einfach auf MouseDown/Up reagieren, um den Click abzufangen. Wenn es der Button selbst sein soll, wirst Du nicht um das Überschreiben des ControlTemplates herumkommen. Beispiele dazu findest Du aber haufenweise im Web.


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Sonntag, 6. Juni 2010 07:34
  • Hallo Peter,Olaf,

    Ok im Prinzip habt ihr ja recht, aber ich habe in den Button einen Farbverlauf gegeben, und ich finde es sieht schrecklich aus wenn man darüber fährt und dann zeigt sich der System.Button oder bei der Selection pulsiert er mit der Systemfarbe gegen das pulsieren der Schrift hab ich ja nichts aber gegen diese Systemfarbe. Es gibt da noch die Eigenschaft FocusVisualStyle dort habe ich meien Style ebenfalls eingetragen, aber da passiert auch nichts. Normal ist WPF so flexiebel da solte es doch möglichsein den Button nach seinen Wünschen zu verändern. Ich habe eigentlich gedacht, dass ich mal wieder einen Befehl übersehen habe, mit dem man das Regeln könnte. Normalerweise kann ein Label, soviel ich weis, weder einen Tabstop noch den Focus bekommen, also als Buttonersatz unbrauchbar. Überschreiben des ControlTemplates, nur um eine Farbe zu verändern, ist das nicht so als wenn man mit Kanonen nach Spatzen schießt. Außerdem hab ich sawas noch nicht gemacht, wie gesagt in WPF bin ich ein Frischling.

    Vielleicht habt ihr ja noch andere Ideen

    Danke und Gruß, Dieter

     

    Sonntag, 6. Juni 2010 11:08
  •  

    Also mir fällt auch nur die Möglichkeit ein das Controltemplate zu überschreiben.

    Vielleicht ein kurzes Beispiel:

    <Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight">
      <Window.Resources>
        <Style TargetType="{x:Type Button}" x:Key="UnchangeableBackgroundStyle">
          <Setter Property="Template">
            <Setter.Value>
              <ControlTemplate TargetType="Button">
                <Border x:Name="Border"
                 CornerRadius="3"
                 BorderBrush="{TemplateBinding BorderBrush}"
                 BorderThickness="{TemplateBinding BorderThickness}"
                 Padding="{TemplateBinding Padding}"
                 Background="{TemplateBinding Background}">
                  <ContentPresenter HorizontalAlignment="Center"
                       VerticalAlignment="Center"
                       Margin="2"
                       RecognizesAccessKey="True"/>
                </Border>
                <ControlTemplate.Triggers>
                  <!-- perhaps events you want to give the user a feedback-->
                  <Trigger Property="IsMouseOver" Value="true">
                    <Setter TargetName="Border" Property="BorderBrush" Value="Blue"/>
                  </Trigger>
                  <Trigger Property="IsPressed" Value="true">
                    <Setter TargetName="Border" Property="BorderBrush" Value="Blue"/>
                  </Trigger>
                </ControlTemplate.Triggers>
              </ControlTemplate>
            </Setter.Value>
          </Setter>
        </Style>
      </Window.Resources>
      <StackPanel>
        <Button Content="Standard Control Template" Background="Aqua" Padding="5" Margin="5"/>
        <Button Content="Verändertes Control Template" Background="Aqua" Padding="5" Margin="5" Style="{StaticResource UnchangeableBackgroundStyle}"/>
      </StackPanel>
    </Window>
    
    Hoffe das hilft.

    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Sonntag, 6. Juni 2010 11:50
  • Hallo Klaus 82,

    danke für dein Beispiel, was mir hier noch fehlt ist die Animation wenn der Button gedückt bzw losgelassen wird, aber sonst kommst es dem was ich möchte schon sehr nahe. Was ich micht verstehe ist, dass bei FocusVisualStyle nichts passiert wenn ich den Style einstelle, obwohl der Style bei Lokal ausgewählt werden kann.

    Wenn es so is, dass man wirklich das Controltemplate überschreiben muss, dann sollte ich mich da mal richtig einlesen

    Gruß, Dieter

    Sonntag, 6. Juni 2010 13:18
  • Vielleicht hilft dir das noch weiter:

    http://stevehorsfield.wordpress.com/2009/08/12/viewing-default-wpf-control-templates-free-tool/

    Dort kannst du dir das Default-Template der verschiedenen Controls ausschauen.

    Meins vom Button zum Beispiel:

    <ControlTemplate TargetType="ButtonBase" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero">
     <mwt:ButtonChrome Background="{TemplateBinding Panel.Background}" BorderBrush="{TemplateBinding Border.BorderBrush}" RenderDefaulted="{TemplateBinding Button.IsDefaulted}" RenderMouseOver="{TemplateBinding UIElement.IsMouseOver}" RenderPressed="{TemplateBinding ButtonBase.IsPressed}" Name="Chrome" SnapsToDevicePixels="True">
     <ContentPresenter RecognizesAccessKey="True" Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" Margin="{TemplateBinding Control.Padding}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
     </mwt:ButtonChrome>
     <ControlTemplate.Triggers>
     <Trigger Property="UIElement.IsKeyboardFocused">
      <Setter Property="mwt:ButtonChrome.RenderDefaulted" TargetName="Chrome">
      <Setter.Value>
       <s:Boolean>True</s:Boolean>
      </Setter.Value>
      </Setter>
      <Trigger.Value>
      <s:Boolean>True</s:Boolean>
      </Trigger.Value>
     </Trigger>
     <Trigger Property="ToggleButton.IsChecked">
      <Setter Property="mwt:ButtonChrome.RenderPressed" TargetName="Chrome">
      <Setter.Value>
       <s:Boolean>True</s:Boolean>
      </Setter.Value>
      </Setter>
      <Trigger.Value>
      <s:Boolean>True</s:Boolean>
      </Trigger.Value>
     </Trigger>
     <Trigger Property="UIElement.IsEnabled">
      <Setter Property="TextElement.Foreground">
      <Setter.Value>
       <SolidColorBrush>#FFADADAD</SolidColorBrush>
      </Setter.Value>
      </Setter>
      <Trigger.Value>
      <s:Boolean>False</s:Boolean>
      </Trigger.Value>
     </Trigger>
     </ControlTemplate.Triggers>
    </ControlTemplate>

     

    Gruß, Klaus

    Sonntag, 6. Juni 2010 14:27
  • Hallo Klaus,

    da habe ich noch Schwierigkeiten, das alles zu verstehen. für jemanden der schon jahrelang mit WPF arbeitet wird da schon eher durchblicken. Ich seh schon ich muss noch viel lernen. Trotzdem danke, das Tool von deinem Link schau ich mir aber mal genauer an. Ich hätte jetzt nicht geglaubt, dass eine so einfache Frage, so schwer zu beantworten ist.

    Grüße Dieter

    Sonntag, 6. Juni 2010 15:12
  • Hi Dieter,

    je nach verwendetem System können ControlTemplates variieren; d.h., auf einem XP-Rechner sieht ein Button anders aus, als auf einem Win7-Rechner.

    Wenn Du sicherstellen möchtest, dass ein Control unter allen Betriebssystemen identisch ausschaut, ist das Überschreiben des ControlTemplates daher sinnvoll, vor allem auch, weil Du nur dann die vollständige Kontrolle über das Erscheinungsbild hast.In Klaus' Beispiel siehst Du auch, dass ein Chrome verwendet wird; dieser wiederum ist für den Effekt verantwortlich, den Du zu Beginn genannt hast.
    Wenn Du nun den Style hernimmst, der auf Deinem System gültig ist (oder auch den, den Klaus hergezeigt hat), kannst Du ganz einfach die Teile entfernen, die unerwünscht sind (z.B. den Chrome) und ggf. hinzufügen, was Du noch benötigst, bzw. Dinge ändern (wie die Farben).



    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Montag, 7. Juni 2010 07:01
  • Hi Olaf,

    So einfach wie du das beschreibst ist es nun auch wieder nicht,jedenfalls nicht für mich. Ich gehe mal davon aus, dass du dich schon mehrere Jahre damit beschäftigst und, dass du dadurch keine Probleme hast den Code zu lesen und auf den ersten Blick zu erkennen worauf es ankommt. Ich beschäftige mich nun seit ca. 4 Wochen mit WPF und es tut mir leid aber 80% von dem Code von Klaus verstehe ich noch nicht. Das mit dem Chrome ist mir schon aufgefallen,aber ich habe keine Ahnung wie ich nun meien Style/Skin hier hineinbringen soll. ich habe irgendwo gelesen, dass man ein ResourcenWörterbuch hierfür verwenden soll. Also mit anderen Worten stehe ich noch voll auf dem Schlauch.

    Ich wollte mir auch schon ein Buch über WPF kaufen (damit ich nicht immer so dumm fragen muss), aber für das Net4.0 kommen die alle erst noch raus, und ein altes will ich mir nicht zulegen, da diese Bücher nicht gerade billig sind.

    Ich bin euch sehr dankbar für eure Hilfe, gerade Du und Peter habt mir schon viele Fragen hier im Forum beantwortet.

    Gruß, Dieter

    Montag, 7. Juni 2010 15:56
  • Hi Dieter,

    ich beschäftige mich erst seit knapp einem Jahr mit WPF, kann aber Deinen "Frust" durchaus nachvollziehen - die Lernkurve von WPF ist ziemlich steil und hat mich auch mächtig Nerven gekostet (und tut's immer noch!). :-)

    Der von Klaus hier gezeigte "Code" ist wohl lediglich das, was auf seinem System als das Standardtemplate des Button Controls hinterlegt ist (sieht auf meinem XP-System übrigens ganz anders aus). In diesen Templates sind die Werte der Setters oft in expliziter Form dargestellt; d.h., anstelle eines <Setter Property="mwt:ButtonChrome.RenderDefaulted" TargetName="Chrome" Value="True"> findet sich halt die "Langversion" mit expliziter Typdeklaration. Damit kannst Du das Template gleich ganz anders lesen oder (innerlich) verkürzen. Über den enthaltenen Chrome (der aus dem Aero-Theme stammt) werden einige Dinge bereitgestellt, die Du aber durchaus auch löschen kannst, bzw. auch musst, wenn's Dir darum geht, dass Dein Button unabhängig von den System-/Theme-Einstellungen immer identisch aussieht. Auch wichtig ist, dass in den Standardtemplates die meisten Werte von Elementen nicht direkt auf ein Element angewendet werden, sondern vielmehr in Form von Property-Settern hinterlegt sind - weil sie lediglich Vorgabewerte darstellen sollen. Würden Sie in gleicher Art und Weise direkt auf die jew. Elemente angewendet, wären Sie fix, d.h. wenn Du innerhalb eines abgeleiteten Styles diese über einen Trigger setzen würdest, hätten sie keinen Effekt, weil die Präzedenz des im urspr. Templates hinterlegten Wertes höher ist - ein beliebter Stolperstein übrigens.

    Was Bücher anbelangt - für den Einstieg sind sie sicher sehr sinnvoll, aber wenn ich mir meine "Bibliothekkurve" der letzten 15 Jahre anschaue, sehe hier eine stark abfallende Kurve. Soll heißen, ich kaufe immer weniger Bücher (zu WPF habe ich gerade mal 3), weil es so viele Resourcen im Web gibt. Auch die MSDN stellt eine sehr guter Quelle an Informationen zum Thema - such einfach mal nach "msdn wpf".

    Der Umstand, dass Du auf eine augenscheinlich "simple" Frage so "komplizierte" Antworten bekommst liegt wohl eher daran, dass Du mit Deinem Wunsch nach einer Verhaltensweise - entgegen der von einem "normalen" Benutzer erwarteten - das Klugschwätzer-Gen aktiviert hast. ;-)

    Schau Dir doch mal diesen Thread an - da habe ich mal einen Button-Style gebastelt, der die Hintergrundfarbe des Buttons ändert, wenn sich die Maus über ihm befindet. Bin mir sicher, dass Du darüber hinaus unendlich viele Beispiele im Web zum gleichen Thema findest.


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:41
    Dienstag, 8. Juni 2010 08:34
  • Hi Olaf,

    nein ich bin nicht gefrustet,es fällt mir nur sehr schwer zu erkennen, was ich wie machen muss, da man mit WPF sehr viel machen kann ist es auch schwer hier durchzublicken. Schon die einfachsten Sachen (bei denen ich in Delphi nicht mal nachgedacht habe) stehe ich teilweise noch voll auf dem Schlauch. Was noch dazukommt ist, dass ich kein Paste and Copy Programmierer bin oder war, das heißt ich möcht verstehen was ich mache, damit ich beim nächsten mal nicht wieder die selben Probleme habe. Natürlich lerne ich auch von anderen Snippets oder schau mir Codeteile von anderen an, aber zuerst probiere ich es mal selbst zu einer Lösung zu kommen. Ich werde mir den Thread mit dem Button Style sehr genau ansehen, leider habe ich heute Abend keine Zeit dafür. Aber so wie ich mich kenne, werde ich bestimmt noch einige Fragen dazu haben. Du weist ja aufgegeben wird nicht.

    Übrigens das Klugschwätzer-Gen habe ich mit Sicherheit nich aktiviert, ich hoffe, dass da nicht falsch rübergekommen ist.

    Bis dann Dieter

    Dienstag, 8. Juni 2010 16:28
  • Hi Olaf,

    Klasse Beipiel dein Button. Ich hab es jetzt auch einigermaßen gefressen (und gleich mal abgespeichert). Allerdings habe ich immer noch Probleme, wenn ich sowas machen sol,l ohne dass ich mir ein Beipiel zu Rate nehme. Nur einen eigenen Style zu entwerfen welcher alle Componenten beinhaltet ist eigentlich ohne Hilfsmittel nicht machbar, ich habe aber kein freies oder günstiges Hilfsmittel hierfür im Netz gefunden, außer denen die man für viel Geld kaufen kann. Du hast jetzt den Style im Mainwindow deklariert, aber ich lese immer wieder, dass hierfür ein WPFWörterbuch verwenden soll, nur wie bindet man ein solches Wörterbuch ein?

    Gruß Dieter

    Samstag, 12. Juni 2010 11:02
  • Hi Dieter,

    äh, "WPFWörterbuch"? Ich vermute mal, Du meinst Du ein ResourceDictionary. Dieses kannst Du entweder direkt innerhalb von App.Xaml (C#) oder Application.Xaml (VB) hinterlegen, oder Du hinterlegst dort eine Referenz auf eine Datei, innerhalb derer sich dann die Definitionen befinden. Schau dazu mal in die MSDN zum Thema .


    Cheers,
    Olaf
    http://blogs.intuidev.com
    • Als Antwort markiert Optiplex01 Samstag, 12. Juni 2010 18:31
    Samstag, 12. Juni 2010 12:02
  • Hi Olaf,

    genau, ich habe gerade nochmal nachgeschaut ResourceWörterbuch (tolle Übersetzung) heißt es im Deutschen. Ich muss das also in der Application.XAML einbinden, damit sollte ich eigentlich klarkommen.

    Nochmals Danke für deine Hilfe und Geduld mit der du alle Fragen beantwortest.

    Bis dann , Gruß Dieter

    Samstag, 12. Juni 2010 18:40