多绑定w /转换器中的XAML字符串格式

时间:2016-06-05 22:35:20

标签: c# wpf xaml binding

我正在实现此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;
    }
}

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:3)

请参阅MSDN上StringFormat页面上的备注部分:

  

...

     

使用MultiBinding时,将应用StringFormat属性   仅当它在MultiBinding上设置时。 StringFormat的值   在任何子Binding对象上设置的都将被忽略。 ...

原因是StringFormat仅在绑定的目标属性实际上是string类型时应用,而在MultiBinding中不是这种情况

因此,您要么设置MultiBinding的StringFormat(并且不要设置其Converter),要么在转换器中进行格式化。