Сначала убедитесь, что вы используете Brush вместо Color, что назначаете значение для свойства, такого как Foreground или Background.
Затем вы можете добавить свойство indexer в ваш класс ColourSchemes, который принимает значение enumв качестве ключа:
public enum ErrorType
{
TerminalError, CriticalError
}
public class ColourSchemes
{
private readonly Dictionary<ErrorType, Brush> brushes =
new Dictionary<ErrorType, Brush>
{
{ ErrorType.TerminalError, Brushes.Orange },
{ ErrorType.CriticalError, Brushes.Red }
};
public Brush this[ErrorType value]
{
get { return brushes[value]; }
}
public static ColourSchemes Instance { get; } = new ColourSchemes();
}
Теперь вы можете связать свойство следующим образом:
Background="{Binding Source={x:Static local:ColourSchemes.Instance}, Path=[CriticalError]}">
Или в сеттере:
<Setter Property="Background"
Value="{Binding Source={x:Static local:ColourSchemes.Instance}, Path=[CriticalError]}"/>
Однако вы можетехочу взглянуть на Динамические ресурсы .