Hallo,
ich habe gelernt, dass man in XAML Styles erstellen kann.
Kann ich diesen C#-Code:
private void TextBox_GotFocus(Object sender, EventArgs e)
{
if (ChkBarrierefrei.IsChecked.Value == true)
{
(sender as TextBox).Background = AKTIVES_ELEMENT_CONTRAST;
}
}
Auch als XAML Style erstellen?
Wenn ja, Codebeispiel wäre super.
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Mit Triggern.
Trigger, DataTrigger & EventTrigger bzw Introduction to WPF styles im Allgemeinen.
Darüber Hinaus sollte man in WPF den MVVM Pattern verwenden. Dieser vereinfacht vieles und macht vieles zudem erst möglich.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Codebeispiele und Beispiel-Projekt gibt es auch hier dazu: [Artikel] MVVM und DataBinding
Weeks of programming can save you hours of planning
Vielen Dank Ihr beiden!
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
so, bin jetzt beim Thema Trigger
<Trigger Property="IsMouseOver" Value="true">
</Trigger>
wo finde ich einen Überblick welche gültigen Werte es gibt für die Trigger Property ?
Ich möchte Trigger erstellen:
Wenn ein Bedienelement den Fokus hat
Wenn ein Bedienelement den Fokus verliert
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Die Properties ergeben sich aus dem Typ des Objekts, auf das den Trigger wirkt.
Wenn das eben ein eine TextBox ist, die von UIElement erbt, dann hat die ein Property IsMouseOver
Diese kann man einfach aus der Doku nehmen: WPF UIElement Class
Steht aber in der Doku der Trigger Erklärung;-)
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
okay, vielen Dank!
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Wie kann ich in XAML einem Element 2 Styles zu weisen?
<TextBox Name="edtSuchen" [B]Style="{StaticResource EdtSuchen/ErsetzenStyle}[/B]" ToolTip="Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste" KeyDown="edtSuchen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="3"/>
Ich habe jetzt hier Fettgedruckten Style definiert und möchte jetzt noch diesen Style
<Style x:Key="[B]TextboxAktiv[/B]" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
zuweisen. wie schreibt man das?
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Das geht nicht.
Du kannst aber Styles miteinander kombinieren, indem du BasedOn
verwendest, oder einen Standard-Style für ein Control erstellst (mit TargetType
), und dann einen zusätzlichen Style zuweist. Du kannst auch für jede Hierarchie-Ebene im XAML unterschiedliche Styles festlegen, also z.B. einen in den App-Resourcen für die gesamte Anwendung, und dann eine in den Windows-Resourcen pro Fenster, dann pro Layout-Element usw.
Schau dir ruhig auch mal an, wie das in den diversen Themes bzw. Style-Bibliotheken wie Material oder Metro gelöst ist.
Weeks of programming can save you hours of planning
@MrSparkle
okay, Danke!
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
uff, dieses WPF ist zum lernen sehr komplex!
Ich habe folgendes Problem:
Dieses hier ist mein Standardstyle für die Textboxen Suchen und Ersetzen:
<Style x:Key="EdtSuchen/ErsetzenStyle" TargetType="TextBox">
<Setter Property="Background" Value="White"/>
<Setter Property="Width" Value="150"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="Black"/>
</Style>
Wenn eine der beiden Textboxen den Fokus hat, sprich aktiv ist soll dieser Style angewendet werden:
<Style x:Key="TextboxAktiv" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
wie löst das der erfahrene WPF/XAML-Profi?
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Ich bin an der Stelle auch raus, weil ich kein WPF Profi bin.
Schau Dir doch mal nen Tutorial an - und wie andere Bibliotheken das machen; zB auf GitHub.
Ansonsten stehst Du jetzt vor jeder Zeile Code im Forum und fragst nach; das bremst ja Dich auch aus 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
eigentlich wollte ich mich nie in einem Forum registrieren nur um WPF zu lernen!
Ich habe mir das Buch von Thomas Claudius Huber gekauft, das hat über 1000 Seiten und ich war mir sicher, dass ich mit diesem Buch ALLE Probleme lösen werde, die beim entwickeln meines barrierefreien WPF Texteditor haben werde.
Das war ein schwerer Irrtum! Das Buch hat mir bei noch überhaupt keinem Problem geholfen.
Dann habe ich noch ein Lernvideo von Video2Brain über WPF. Das ist wesentlich besser wie das Buch, hilft aber auch noch immer.
Dann habe ich mir noch ein Cookbook gekauft über WPF, das hilft mir bei diesem Problem auch nicht weiter.
was ich damit sagen möchte ist, wenn ich hier fragen stelle, dann nur deshalb, weil ich sonst für meine Probleme nirgendwo Lösungen finde und ich wollte den Texteditor bis zur ersten September Woche fertig haben.
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Normalerweise würde man den Focused-Trigger in den Textbox-Style integrieren, und keinen eigenen Style dafür verwenden.
Der Trigger macht ja schon genau das, was du mit dem StyleSelector erreichen willst.
Weeks of programming can save you hours of planning
@Caveman
Danke
@MrSparkle
Kannst Du bitte anhand von dieser XAML-Zeile ein Beispiel machen:
<TextBox Name="edtSuchen" Style="{StaticResource EdtSuchen/ErsetzenStyle}" ToolTip="Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste" KeyDown="edtSuchen_KeyPress" GotFocus="TextBox_GotFocus" LostFocus="TextBox_LostFocus" TabIndex="3"/>
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java
Ich habe es:
<Style x:Key="TextboxAktiv" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="ComboboxAktiv" TargetType="ComboBox">
<Style.Triggers>
<Trigger Property="IsFocused" Value="true">
<Setter Property="Background" Value="Yellow"/>
</Trigger>
</Style.Triggers>
</Style>
<ComboBox x:Name="ComboboxFontname" Style="{StaticResource ComboboxAktiv}" ToolTip="Auswahlliste um Schriftart festzulegen" SelectedIndex="0" Width="200" TabIndex="1" />
<ComboBox x:Name="ComboboxFontsize" Style="{StaticResource ComboboxAktiv}" ToolTip="Auswahlliste um Schriftgröße festzulegen" SelectedIndex="0" Width="45" TabIndex="2">
<TextBox Name="edtSuchen" BorderThickness="1" BorderBrush="Black" Width="150" Style="{StaticResource TextboxAktiv}" ToolTip="Bitte Suchbegriff eingeben. Suche Starten mit der Enter-Taste" KeyDown="edtSuchen_KeyPress" TabIndex="3"/>
<TextBox Name="edtErsetzen" BorderThickness="1" BorderBrush="Black" Width="150" Style="{StaticResource TextboxAktiv}" ToolTip="Bitte Begriff eingeben, durch den der Suchbegriff ersetzt werden soll. Ersetzen Starten mit der Enter-Taste" KeyDown="edtErsetzen_KeyPress" TabIndex="4"/>
Ist noch nicht perfekt, aber es zeigt, dass es auch ohne C#-Code geht, DANKE!!!
barrierefreies Webdesign, barrierefreie Softwareentwicklung mit C#, barrierefreie Softwareentwicklung mit Java