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

bij*_*iju 3 data-binding wpf binding string-formatting

我希望将一个timepan属性绑定到一个文本块,这似乎是在这篇文章的帮助下解决的

现在我想在数据为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>
Run Code Online (Sandbox Code Playgroud)

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

Fre*_*lad 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>
Run Code Online (Sandbox Code Playgroud)

转换器基本上做你应该能够使用属性的东西

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();
    }
}
Run Code Online (Sandbox Code Playgroud)