我希望将一个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>
如果数据为空,我怎么能隐藏“:”
答案 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。