c#
  • wpf
  • xaml
  • datetime
  • 2014-04-04 31 views 0 likes 
    0

    假設我在我的StatusBar中有一個StatusBarItem,其唯一目的是顯示當前的DateTime信息。我知道如何從代碼隱藏完成此任務;不過,我試圖找出一種方法來完全從XAML中完成。如何更新純粹在XAML中的DateTime.Now綁定?

    這是XAML代碼我使用:

    <StatusBarItem Content="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='dd/MM/yyyy hh:mm tt'}"/> 
    

    它顯示當我運行該程序的DateTime信息,但我不能想出一個辦法,通過XAML純粹的更新,如果是連可能。

    回答

    3

    你不能這樣做,只有內部XAML嵌入,做這樣的事情,

    映射MSDN時。你可以通過實現INotifyPropertyChanged的利用計時器沒有資源支持的日期時間,

    namespace Sample.WpfExample 
        { 
        public class TickerC : INotifyPropertyChanged 
        { 
         public TickerC() 
         { 
          Timer timer = new Timer(); 
          timer.Interval = 1000; // 1 second updates 
          timer.Elapsed += timer_Elapsed; 
          timer.Start(); 
         } 
    
         public DateTime Now 
         { 
          get { return DateTime.Now; } 
         } 
    
         void timer_Elapsed(object sender, ElapsedEventArgs e) 
         { 
          if (PropertyChanged != null) 
           PropertyChanged(this, new PropertyChangedEventArgs("Now")); 
         } 
    
         public event PropertyChangedEventHandler PropertyChanged; 
        } 
    

    在XAML

    <Window.Resources> 
        <src:TickerC x:Key="ticker" /> 
        </Window.Resources> 
    
    <StatusBarItem Content="{Binding Source={StaticResource ticker}, Path=Now, Mode=OneWay}"/> 
    
    +0

    正如我在我的問題中解釋的,我非常清楚如何在代碼隱藏方面做到這一點。不過,謝謝你的例子。 –

    +0

    閱讀我的答案,你不能只在XAML中做到這一點,因爲這是UI必須得到通知 – Sajeetharan

    +0

    正確的,這可能是你的答案。 –

    相關問題