绑定返回null时隐藏多绑定stringformat

时间:2010-12-30 16:19:19

标签: wpf data-binding binding string-formatting

我希望将一个timepan属性绑定到一个文本块,这似乎可以解决  this帖子的帮助

现在我想在数据为null时隐藏StringFormat。如果我使用带有stringformat的mutibinding并且我的数据为null,那么stringformat只显示“:”

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}:{1}">
            <Binding Path="MyTime.Hours" TargetNullValue={x:Null}/>
            <Binding Path="MyTime.Minutes" TargetNullValue={x:Null}/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

如果数据为空,我怎么能隐藏“:”

2 个答案:

答案 0 :(得分:5)

我基本上在这里回答与Nicolas Repiquet相同的事情,但无论如何...... 感觉框架中缺少一部分。 (据我所知)没有办法让MultiBinding在没有Converter的情况下使用FallbackValue。使用这种方法可能会让你回到原点1,因为你的上一个问题是关于更好的方法然后使用转换器:)

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}:{1}"
                      Converter="{StaticResource FallbackConverter}"
                      FallbackValue="">
            <Binding Path="MyTime.Hours" />
            <Binding Path="MyTime.Minutes" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

转换器基本上可以“你应该”使用属性

public class FallbackConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        foreach (object value in values)
        {
            if (value == DependencyProperty.UnsetValue)
            {
                return DependencyProperty.UnsetValue;
            }
        }
        return values;
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

答案 1 :(得分:2)

查看多重绑定回退值here