I\'m a complete newbie at WPF.
At the moment I\'m making a usercontrol for form elements called \"LabeledTextbox\" which contains a label, a textbox and a textblock for
You can grab the default colours from the class SystemColors
Here is the list of all system colours: http://msdn.microsoft.com/de-de/library/system.windows.systemcolors.aspx
Default background colour of the client area:
_textbox.Background = SystemColors.WindowBrush;
Default text colour inside the client area:
_textbox.SystemColors.WindowTextBrush
Does this work? Setting it to black is better than using the ClearValue method
public string ErrorMessage
{
set
{
if (string.IsNullOrEmpty(value))
{
_textbox.Background = Brushes.Black;
}
else
{
_textbox.Background = Brushes.Red;
}
_errorMessage.Text = value;
}
}
Just store the default settings. Here a code excample.
System.Windows.Media.Brush save;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//Store the default background
save = testButton.Background;
}
private void ChangeBackground(){
testButton.Background = Brushes.Red;
}
private void restoreDefaultBackground(){
//Restore default Backgroundcolor
testButton.Background = save;
}
You could use
_textBox.ClearValue(TextBox.BorderBrushProperty);
That will remove the directly assigned value and go back to the value defined by the style or template.
I may be late to the party, but for future readers, you can also use Button.BackgroundProperty.DefaultMetadata.DefaultValue
for this purpose. This is especially useful when you're using a Converter where you need to return a value and therefore cannot use ClearValue()
call.