2010-07-28 17 views
11

ठीक है, मुझे डेटटाइम बांधना होगा.अब टेक्स्टब्लॉक पर, मैंने इसका इस्तेमाल किया:डेटटाइम के लिए बाध्यकारी.अब। मूल्य अपडेट करें

 Text="{Binding Source={x:Static System:DateTime.Now},StringFormat='HH:mm:ss tt'}" 

अब, इसे अपडेट करने के लिए कैसे मजबूर करें? यह वह समय है जब नियंत्रण लोड हो जाता है और इसे अपडेट नहीं किया जाएगा ...

उत्तर

21

संपादित (मैं उसे स्वत: अपडेट के लिए इच्छुक के लिए खाते में नहीं था):

यहाँ एक 'टिकर' वर्ग के a link है कि INotifyProperty का उपयोग करता है ताकि यह स्वतः अपडेट हो जाए।

namespace TheJoyOfCode.WpfExample 
{ 
    public class Ticker : INotifyPropertyChanged 
    { 
     public Ticker() 
     { 
      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; 
    } 
} 


<Page.Resources> 
    <src:Ticker x:Key="ticker" /> 
</Page.Resources> 

<TextBox Text="{Binding Source={StaticResource ticker}, Path=Now, Mode=OneWay}"/> 

प्रचार:

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

अब इस काम करेगा:

<TextBox Text="{Binding Source={StaticResource ticker}, Path=Now, Mode=OneWay}"/> 
+2

गलत। यह मदद नहीं करेगा। (यह वही है जो उसने लिखा था) – SLaks

+0

और वह क्यों काम नहीं करेगा? –

+0

क्योंकि यह अभी भी अपडेट नहीं होगा। प्रश्न फिर से पढ़ें। – SLaks

1

आपके पास टाइमर कि अद्यतन करने की जरूरत है यहाँ साइट से कोड है प्रत्येक सेकेंड में टेक्स्टबॉक्स।

2

विंडोज फोन के लिए, आप इस स्निपेट

public Timer() 
{ 
    DispatcherTimer timer = new DispatcherTimer(); 
    timer.Interval = TimeSpan.FromSeconds(1); // 1 second updates 
    timer.Tick += timer_Tick; 
    timer.Start(); 
} 

public DateTime Now 
{ 
    get { return DateTime.Now; } 
} 

void timer_Tick(object sender, EventArgs e) 
{ 
    if (PropertyChanged != null) 
     PropertyChanged(this, new PropertyChangedEventArgs("Now")); 
} 

public event PropertyChangedEventHandler PropertyChanged; 

मैं एम-वाई का कोड अनुकूलित उपयोग कर सकते हैं। उम्मीद है कि यह भी उपयोगी हो सकता है।

संबंधित मुद्दे