我正在实现此TextBlock并且 stringformat 未出现,只出现绑定属性的值。你能告诉我我做错了什么吗?
XAML CODE
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource ResourceKey=myConverter}">
<Binding Path="loc.country" StringFormat="Country: {0}"/>
<Binding Path="loc.area" StringFormat="Area: {0}"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
转换器
public class MyMultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values[1] == null)
return values[0];
return values[1];
}
public object[] ConvertBack(object values, Type[] targetType, object parameter, CultureInfo culture)
{
return null;
}
}
致以最诚挚的问候,
答案 0 :(得分:3)
请参阅MSDN上StringFormat页面上的备注部分:
...
使用MultiBinding时,将应用StringFormat属性 仅当它在MultiBinding上设置时。 StringFormat的值 在任何子Binding对象上设置的都将被忽略。 ...
原因是StringFormat
仅在绑定的目标属性实际上是string
类型时应用,而在MultiBinding中不是这种情况
因此,您要么设置MultiBinding的StringFormat
(并且不要设置其Converter
),要么在转换器中进行格式化。