SORU
30 Aralık 2010, PERŞEMBE


Nasıl XAML zaman aralığı biçimine

TimeSpan bir özelliği bağlı olan bir dize biçimlendirmek için çalışıyorum. Eğer özelliği 5 ** tip ise çalışır ama eğer TimeSpan Bir ise başarısız. Yapılan bir dönüştürücü kullanarak bulabilirim. Ama eğer başka bir seçenek varsa öğrenmeye çalışıyorum.

Örnek Kod:

public TimeSpan MyTime { get; set; }

    public Window2()
    {
        InitializeComponent();
        MyTime = DateTime.Now.TimeOfDay;
        DataContext = this;
    }

Xaml

  <TextBlock Text="{Binding MyTime,StringFormat=HH:mm}"/>

Sadece saat ve mintes göstermek için dize bekliyorum. Ama olarak gösteriyor:

19:10:46.8048860

CEVAP
30 Aralık 2010, PERŞEMBE


.NET 3.5 MultiBinding yerine kullanabilirsiniz

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0}:{1}">
            <Binding Path="MyTime.Hours"/>
            <Binding Path="MyTime.Minutes"/>
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Güncelleme
Yorumlara cevap vermek.

Eğer saat veya dakika 0-9 bile çıktı 2 basamak emin olmak için {0:00} yerine {0} kullanabilirsiniz. Bu saat 12:01 için çıktı 12:01 emin 12:1 yerine yapacak.
Eğer 1:01 01:01 çıkış kullanmak istiyorsanız, 10**

Ve Conditional formatting dakika negatif işaretini kaldırmak için kullanılabilir. {1:00} kullanın {1:00;00} biz yerine

<TextBlock>
    <TextBlock.Text>
        <MultiBinding StringFormat="{}{0:00}:{1:00;00}">
            <Binding Path="MyTime.Hours" />
            <Binding Path="MyTime.Minutes" />
        </MultiBinding>
    </TextBlock.Text>
</TextBlock>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • gsipek

    gsipek

    20 Temmuz 2007
  • MugenPowerBatteries

    MugenPowerBa

    8 EKİM 2010
  • Trulia

    Trulia

    29 Kasım 2006