我们有一个独特的案例,我们需要在 DataGrid 列中显示自定义类型的值。自定义类型可以是以下三个值之一:数字、模拟和串行。
- 数字代表模型中的“0”或“1”
- 类似物是 '0' 和 '255' 之间的整数
- 序列只是字符串
对于类比或序列,我们只想在 DataGrid 的列中按原样显示值,对于这些类型,值是可编辑的,但对于在模型中存储为“0”和“1”的数字,我们想要将它们显示为字符串 'True' 或 'False' 并且它们不可编辑。
Convert
下面是我们在方法中需要的逻辑示例:
// In this example, 'rawValue' is the value as represented in the model
// ValueType is an enum of Digital, Analog or Serial
return (valueType != ValueType.Digital)
? rawValue
: (rawValue == 0)
? "False"
: "True";
然后我们需要相反的ConvertBack
方法。
我们遇到的问题是传递valueType
给转换器以在Convert
和ConvertBack
方法中使用。您不能Parameter
用于此,因为您无法在 Parameter 上设置绑定。同样,您不能简单地使用 a MultiValueConverter
,因为ConvertBack
没有传递该值,而是希望您返回它。
那么如何将 ValueType 传递给转换器的 Convert 和 ConvertBack 方法呢?
我倾向于在转换器上公开一个新属性并绑定到该属性,但我不确定在解析转换器时该绑定是否只评估一次。