我使用BoolToBrushConverter将TextBox的Brush属性绑定到UserControl中的IsValid依赖项属性。我的IsValid需要4个状态,因为我需要4个不同的画笔才能从转换器返回。有没有其他方式使用字符串?而不是布尔,这可行吗?
答案 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;
}
顺便说一句:根据情况,使用触发器可能会更好,但这并非总是可行。