コード
<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
は、時刻を表示するために使用されています。 -
TextBlock
のText
プロパティは、バインディングを使用してDataContext
から現在時刻を取得しています。RelativeSource={RelativeSource Self}
は、DataContext
が自分自身であることを示しています。 -
TextBlock
のDataContext
プロパティは、DynamicResource
を使用してDateTime
リソースを取得しています。 -
TextBlock
のResources
プロパティには、DateTime
リソースとStoryboard
リソースが含まれています。 -
DateTime
リソースは、system:DateTime
を使用して定義されています。このリソースは、現在時刻を表しています。 -
Storyboard
リソースは、ObjectAnimationUsingKeyFrames
を使用して、現在時刻が1
秒ごとに更新されるように設定されています。 -
EventTriggerは、RoutedEvent="Loaded"
によって、Window
がロードされたときにトリガーされます。BeginStoryboard
は、Storyboard
リソースを使用してアニメーションを開始します。
以上が、WPFを使用して数字時計を実装するためのXAMLコードとその説明です。