Я хочу изменить цвет элемента управления WPF в зависимости от состояния bool, в данном случае состояния флажка.
Это работает нормально, пока я работаю со StaticResources:
Мой контроль
<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>
Мой конвертер:
[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;
}
}
Проблема в том, что у меня есть несколько определений ресурса "WarningColor", зависящих от настройки дневного или ночного режима. Эти события не вызывают изменение цвета WarningColor.
Есть ли способ сделать возвращаемое значение динамическим или мне нужно переосмыслить свой дизайн?