4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WPFでC#コードを使用せずにStoryboardを使って数字時計を実現する方法

Posted at

コード

<Window x:Class="DigitalClock.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:system="clr-namespace:System;assembly=mscorlib"
        Title="Clock" Height="150" Width="350">
    <TextBlock Text="{Binding DataContext.Now,RelativeSource={RelativeSource Self}}"
               DataContext="{DynamicResource DateTime}">
        <TextBlock.Resources>
            <system:DateTime x:Key="DateTime"
                             x:Shared="false" />
            <Storyboard x:Key="Storyboard">
                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="DataContext"
                                               Duration="0:0:1"
                                               RepeatBehavior="Forever"
                                               AutoReverse="False">
                    <DiscreteObjectKeyFrame KeyTime="50%"
                                            Value="{StaticResource DateTime}" />
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </TextBlock.Resources>
        <TextBlock.Triggers>
            <EventTrigger RoutedEvent="Loaded">
                <BeginStoryboard Storyboard="{StaticResource Storyboard}" />
            </EventTrigger>
        </TextBlock.Triggers>
    </TextBlock>
</Window>

説明

上記のコードでは、Window内にTextBlockを配置し、Storyboardを使用して現在時刻を表示しています。以下は、コードの詳細な説明です。

  • TextBlockは、時刻を表示するために使用されています。

  • TextBlockTextプロパティは、バインディングを使用してDataContextから現在時刻を取得しています。RelativeSource={RelativeSource Self}は、DataContextが自分自身であることを示しています。

  • TextBlockDataContextプロパティは、DynamicResourceを使用してDateTimeリソースを取得しています。

  • TextBlockResourcesプロパティには、DateTimeリソースとStoryboardリソースが含まれています。

  • DateTimeリソースは、system:DateTimeを使用して定義されています。このリソースは、現在時刻を表しています。

  • Storyboardリソースは、ObjectAnimationUsingKeyFramesを使用して、現在時刻が1秒ごとに更新されるように設定されています。

  • EventTriggerは、RoutedEvent="Loaded"によって、Windowがロードされたときにトリガーされます。BeginStoryboardは、Storyboardリソースを使用してアニメーションを開始します。

以上が、WPFを使用して数字時計を実装するためのXAMLコードとその説明です。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?