0

我使用 BoolToBrushConverter 将 TextBox 的 Brush 属性绑定到 UserControl 中的 IsValid 依赖属性。我的 IsValid 需要 4 个状态,因为我需要 4 个不同的画笔从转换器返回。还有另一种使用字符串的方法吗?而不是布尔,可以吗?

4

1 回答 1

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;
}

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

于 2010-10-07T09:18:39.217 回答