Возврат динамического ресурса из конвертера

Я хочу изменить цвет элемента управления 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. Есть ли способ сделать возвращаемое значение динамическим или мне нужно пересмотреть свой дизайн?

6
задан lewi 30 September 2011 в 11:59
поделиться