ConverterParameter——任何传递分隔列表的方式
本文关键字:方式 列表 任何传 ConverterParameter 分隔 | 更新日期: 2023-09-27 18:08:38
基本上,如果我有:
<TextBlock Text="{Binding MyValue, Converter={StaticResource TransformedTextConverter},
ConverterParameter=?}" />
如何将某种类型的项数组作为ConverterParameter传入?我认为我可以传入某种类型的分隔符列表,但我不确定使用哪种类型的分隔符,或者是否有一种内置的方法来传入参数数组?
ConverterParameter
是object
类型,这意味着在解析XAML时不会有任何隐式转换,如果您传递任何分隔列表,它将被解释为字符串。当然,你可以在convert方法中拆分它。
但是当你可能想要更复杂的对象时,你可以在处理静态值时做两件事:创建对象数组作为资源并引用它,或者使用元素语法在适当的地方创建数组,例如
1:
<Window.Resources>
<x:Array x:Key="params" Type="{x:Type ns:YourTypeHere}">
<ns:YourTypeHere />
<ns:YourTypeHere />
</x:Array>
</Window.Resources>
... ConverterParameter={StaticResource params}
2:
<TextBlock>
<TextBlock.Text>
<Binding Path="MyValue" Converter="{StaticResource TransformedTextConverter}">
<Binding.ConverterParameter>
<x:Array Type="{x:Type ns:YourTypeHere}">
<ns:YourTypeHere />
<ns:YourTypeHere />
</x:Array>
</Binding.ConverterParameter>
</Binding>
</TextBlock.Text>
</TextBlock>
ConverterParameter
不是一个依赖属性,所以不能基于绑定
您可以硬编码一个值,例如您在转换器中.Split(x)
的x分隔的参数列表,或者您可以使用MultiConverter
,它允许您向转换器发送多个绑定值。
<!-- Not sure the exact syntax, but I'm fairly sure you have
to escape the commas -->
<TextBlock Text="{Binding MyValue,
Converter={StaticResource TransformedTextConverter},
ConverterParameter={};@,@|}" />
或
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource MyMultiConverter}">
<Binding Path="MyValue" />
<Binding Path="Parameters" />
</MultiBinding>
</TextBlock.Text>
<TextBlock>