0
  • 私は c# wpf アプリケーションに取り組んでおり、アプリケーションに時計を追加したいと考えています:
  • アプリケーションでその時計を作成する方法は?
  • アプリケーション クロックを Windows クロックにリンクしないようにする方法は??
  • アプリケーションでさまざまなスタイルで時計を表示する方法は?
  • カレンダー、タイムゾーンなどを含める方法..そして、アプリケーション自体を介してこれらのものを変更しますか?
  • データベースのタイム スタンプをアプリケーション クロックにリンクすることはできますか?また、その方法は?
4

1 に答える 1

5

このような時計を作るのはとても簡単でしょう。

ここにあなたが始めるための小さな例があります

Xaml:

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="233" Width="143" Name="UI">
    <Grid DataContext="{Binding ElementName=UI}">
        <StackPanel>
            <TextBlock Text="{Binding CurrentTime}" />
            <ComboBox ItemsSource="{Binding TimeZones}" SelectedItem="{Binding SelectedTimeZone}" />
        </StackPanel>
    </Grid>
</Window>

コード:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    private string _currenttime;
    private TimeZoneInfo _selectedTimeZone;

    public MainWindow()
    {
        InitializeComponent();
        DispatcherTimer timer = new DispatcherTimer(DispatcherPriority.Background);
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.IsEnabled = true;
        timer.Tick += (s, e) =>
            {
                UpdateTime();
            };
    }

    public List<TimeZoneInfo> TimeZones
    {
        get { return TimeZoneInfo.GetSystemTimeZones().ToList(); }
    }

    public string CurrentTime
    {
        get { return _currenttime; }
        set { _currenttime = value; OnPropertyChanged("CurrentTime"); }
    }

    public TimeZoneInfo SelectedTimeZone
    {
        get { return _selectedTimeZone; }
        set 
        { 
            _selectedTimeZone = value;
            OnPropertyChanged("SelectedTimeZone");
            UpdateTime();
        }
    }

    private void UpdateTime()
    {
        CurrentTime = SelectedTimeZone == null
               ? DateTime.Now.ToLongTimeString()
               : DateTime.UtcNow.AddHours(SelectedTimeZone.BaseUtcOffset.TotalHours).ToLongTimeString();
    }

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}

時計:

ここに画像の説明を入力

于 2013-01-23T01:28:01.643 に答える