我正在尝试格式化绑定到TimeSpan
属性的文本块.如果属性是类型DateTime
但它失败,如果它是a,它可以工作TimeSpan
.我可以使用转换器完成它.但我试图找出是否有其他选择.
示例代码:
public TimeSpan MyTime { get; set; }
public Window2()
{
InitializeComponent();
MyTime = DateTime.Now.TimeOfDay;
DataContext = this;
}
Run Code Online (Sandbox Code Playgroud)
XAML
<TextBlock Text="{Binding MyTime,StringFormat=HH:mm}"/>
Run Code Online (Sandbox Code Playgroud)
我希望文本块只显示小时和分钟.但它显示为:
19:10:46.8048860
我问,因为它似乎不起作用.
假设我们绑定到以下对象:
public class HurrDurr
{
public string Hurr {get{return null;}}
public string Durr {get{return null;}}
}
Run Code Online (Sandbox Code Playgroud)
好吧,看来如果我们使用MultiBinding来反映这一点,就会显示回退值,对吗?
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} to the {1}"
FallbackValue="Not set! It works as expected!)">
<Binding Path="Hurr"/>
<Binding Path="Durr"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
然而,结果实际上是"对".即使强制绑定返回DependencyProperty.UnsetValue
也不起作用:
<TextBlock xmnlns:base="clr-namespace:System.Windows;assembly=WindowsBase">
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} to the {1}"
FallbackValue="Not set! It works as expected!)">
<Binding Path="Hurr"
FallbackValue="{x:Static base:DependencyProperty.UnsetValue}" />
<Binding Path="Durr"
FallbackValue="{x:Static base:DependencyProperty.UnsetValue}" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
尝试使用TargetNullValue,它也是一个半身像.
所以似乎MultiBinding永远不会使用FallbackValue.这是真的吗,还是我错过了什么? …