WPF BoolToBrushConverter有4个值和4个刷子返回?

时间:2010-10-07 07:54:22

标签: wpf ivalueconverter brush

我使用BoolToBrushConverter将TextBox的Brush属性绑定到UserControl中的IsValid依赖项属性。我的IsValid需要4个状态,因为我需要4个不同的画笔才能从转换器返回。有没有其他方式使用字符串?而不是布尔,这可行吗?

1 个答案:

答案 0 :(得分:1)

不确定。您可以将任何想要的内容转换为您想要的内容。您只需要实现如何转换的方式。

但是,如果状态数限制为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;
}

顺便说一句:根据情况,使用触发器可能会更好,但这并非总是可行。