0
我有一个Label
我绑定DateTime
和string
使用MultiBinding
。 对于DateTime
我想检查.MinValue
使用DataTrigger
。使用DataTrigger更改TextBlock的样式,并结合MultiBinding
这是我当前的代码,我改变的TextBlock
的Text
:
<TextBlock >
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1:dd.MM.yyyy} {2:HH:mm:ss}">
<Binding Path="myString" />
<Binding Path="myDate" />
<Binding Path="myDate" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
这是我要如何更改生效日期“ - ”如果它等于DateTime.MinValue
:
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Path=MyDate, StringFormat=d}" />
<Style.Triggers>
<DataTrigger Binding="{Binding MyDate}" Value="{x:Static sys:DateTime.MinValue}">
<Setter Property="Text" Value="-" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
不幸的是我对XAML不太熟悉。我很乐意看到这两个组合。因此,如果myDate等于DateTime.MinDate,TextBox
的Text
将读取-
,如果在myDate
中存在实际DateTime
,则使用我提供的StringFormat
。谢谢你的帮助!
您可以使用'MultiValueConverter'来产生最终的期望输出并跳过'Trigger'。 –
你的意思是,把逻辑代码? – tzippy
是的,确切地说。你创建一个从'IMultiValueConverter'派生的类,在它的'Convert'方法中,你将有一个按照你的'Binding'顺序的对象数组,然后你可以尝试将其转换为基础类型并转换为你需要的类型。例如。如果它是'MinValue'返回“ - ”而不是'ToString()'格式的日期/时间。 –