2011-06-27 4 views
4

のための「ヌル」を示すために、文字列フォーマットをバインド:のDateTime XAMLは、私がこれまでに結合しているDateTime.MinValue

<TextBlock Text="{Binding Path=EndDateTime, StringFormat=d}"/> 

私が欲しいものは、NULLを表示するには、その値がDateTime.MinValue(日時のデフォルト値)であるときということです日付の代わりに。

これは可能ですなし変換器を使用して、何とか私の製本のStringFormatプロパティを拡張しますか?

XAMLのみソリューションはありますか?

ありがとうございます!

+2

は、あなたがたDateTime 'へ' EndDateTime'? 'の種類を変更することができるのTextBlockのスタイルでDataTriggerを使用することができますか? –

+0

@BalaR DateTimeです。 EndDateTimeは、オブジェクト内のプロパティの名前です。 – Dummy01

+0

ええ! DateTimeは構造体であり、nullにはできません。 nullable型に変更できますか? 'DateTime?'または 'Nullable '? –

答えて

8

あなたは

<TextBlock> 
    <TextBlock.Style> 
     <Style TargetType="TextBlock"> 
      <Setter Property="Text" Value="{Binding Path=EndDateTime, StringFormat=d}" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding EndDateTime}" Value="{x:Static sys:DateTime.MinValue}"> 
        <Setter Property="Text" Value="NULL" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
+1

良い点 - 私はSilverlightを心に持っていたことは明らかです。 ;] –

+0

いいね、ありがとう! – Dummy01

+0

このコードは私のために働いていません。実行時に更新した日付はコントロールに更新されません – Tanya

0

Silverlight 4ではこれに対応するXAMLのみのソリューションはありません。Silverlight 5では、マークアップ拡張機能を使用できますが、それでもコードを書く必要があります。 Silverlight 4では、ビヘイビアを使用することもできます。

私の提案は、null機能を提供するViewModelにプロパティを公開することです。次に、コンバーターを使用する必要はありませんが、バインディングするプロパティは好きなように動作します。