KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I want to change the color of a WPF control depending on the state of a bool, in this case the state of a checkbox. This works fine as long as I'm working with StaticResources: My control <TextBox Name="WarnStatusBox" TextWrapping="Wrap" Style="{DynamicResource StatusTextBox}" Width="72" Height="50" Background="{Binding ElementName=WarnStatusSource, Path=IsChecked, Converter={StaticResource BoolToWarningConverter}, ConverterParameter={RelativeSource self}}">Status</TextBox> My converter: [ValueConversion(typeof(bool), typeof(Brush))] public class BoolToWarningConverter : IValueConverter { public FrameworkElement FrameElem = new FrameworkElement(); public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { bool state = (bool)value; try { if (state == true) return (FrameElem.TryFindResource("WarningColor") as Brush); else return (Brushes.Transparent); } catch (ResourceReferenceKeyNotFoundException) { return new SolidColorBrush(Colors.LightGray); } } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } } The problem is that I have several definitions of the Resource "WarningColor" dependant on setting day mode or night mode. These events does not trig the WarningColor to change. Is there a way to make the return value dynamic or do I need to rethink my design?
Tags (comma-separated)
Save Edits
Cancel