WPF BoolToBrushConverter с 4 значениями и 4 кистями для возврата? - PullRequest
0 голосов
/ 07 октября 2010

Я связываю свойство кисти TextBox со свойством зависимости IsValid в UserControl с помощью BoolToBrushConverter. Моему IsValid потребовалось бы 4 состояния, потому что мне нужны 4 разные кисти для возврата из конвертера. Есть ли другой способ использования строк? вместо bool это может сработать?

1 Ответ

1 голос
/ 07 октября 2010

Конечно.Вы можете конвертировать все, что хотите, во что хотите.Вам просто нужно реализовать способ как конвертировать.

Однако, если количество состояний ограничено 4, я бы предложил использовать Enum вместострок, потому что это делает его более безопасным в отношении рефакторинга и т. д.

Что-то подобное должно работать:

internal enum State
{
    State1, State2, State3, State4
}

// ...

public void Convert(object value, ...)
{
    if (value is State)
    {
        State state = (State)value;
        switch(state)
        {
            case State.State1:
                return myBrush1;
            case State.State2:
                return myBrush2;
            case State.State3:
                return myBrush3;
            case State.State4:
                return myBrush4;
        }
    }

    return defaultBrush;
}

Кстати: в зависимости от сценария может быть лучше использовать триггеры, но это не таквсегда возможно.

...