0
我使用BoolToBrushConverter將TextBox的Brush屬性綁定到UserControl中的IsValid依賴屬性。我的IsValid需要4個狀態,因爲我需要4個不同的刷子從轉換器返回。有另一種使用字符串的方法嗎?而不是布爾,可以工作嗎?帶4個值和4個刷子的WPF BoolToBrushConverter返回?
我使用BoolToBrushConverter將TextBox的Brush屬性綁定到UserControl中的IsValid依賴屬性。我的IsValid需要4個狀態,因爲我需要4個不同的刷子從轉換器返回。有另一種使用字符串的方法嗎?而不是布爾,可以工作嗎?帶4個值和4個刷子的WPF BoolToBrushConverter返回?
當然。你可以將任何你想要的東西轉換成你想要的東西。你只需要執行如何它被轉換。
然而,如果狀態的數量限制爲4,我會建議使用字符串枚舉而不是因爲這使得它對於重構等安全
類似的東西應該工作:
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;
}
順便說一句:根據情況,使用觸發器可能會更好,但這並非總是可行。