WPF (.NET 4) 中有 TimePicker 控件吗

swift

1个回答

写回答

一只小纪

2025-07-09 22:19

+ 关注

Meta
Meta

在WPF (.NET 4)中,没有内置的TimePicker控件。然而,我们可以使用一些其他的方法来实现时间选择器的功能。本文将介绍如何使用自定义控件和第三方库来创建一个类似的TimePicker控件。

自定义控件实现

我们可以通过自定义一个控件来实现TimePicker的功能。以下是一个基本的自定义控件的示例:

csharp

using System;

using System.Windows;

using System.Windows.Controls;

namespace TimePickerExample

{

public class TimePicker : Control

{

static TimePicker()

{

DefaultStyleKeyProperty.OverrideMetadata(typeof(TimePicker), new FrameworkPropertyMetadata(typeof(TimePicker)));

}

public static readonly DependencyProperty SelectedTimeProperty =

DependencyProperty.Register("SelectedTime", typeof(TimeSpan), typeof(TimePicker), new PropertyMetadata(TimeSpan.Zero));

public TimeSpan SelectedTime

{

get { return (TimeSpan)GetValue(SelectedTimeProperty); }

set { SetValue(SelectedTimeProperty, value); }

}

}

}

在上面的示例中,我们定义了一个名为TimePicker的自定义控件。该控件包含一个SelectedTime属性,用于存储用户选择的时间。

接下来,我们需要为自定义控件创建一个外观。这可以通过在WPF资源字典中定义控件的样式来实现。以下是一个简单的示例:

xaml

<ResourceDictionary XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"</p> XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml"

XMLns:local="clr-namespace:TimePickerExample">

<Style TargetType="local:TimePicker">

<Setter Property="Template">

<Setter.Value>

<ControlTemplate TargetType="local:TimePicker">

<StackPanel Orientation="Horizontal">

<TextBlock Text="{Binding SelectedTime, RelativeSource={RelativeSource TemplatedParent}, StringFormat='HH:mm'}"/>

<Button Content="Select" Click="Button_Click"/>

</StackPanel>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</ResourceDictionary>

在上面的示例中,我们定义了一个StackPanel,其中包含一个显示SelectedTime的TextBlock和一个用于选择时间的Button。

最后,我们需要在使用TimePicker的窗口或页面中引用资源字典,并使用TimePicker控件。以下是一个示例:

xaml

<Window x:Class="TimePickerExample.MAInWindow"</p> XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml"

XMLns:local="clr-namespace:TimePickerExample"

Title="TimePicker Example" Height="450" Width="800">

<Window.Resources>

<ResourceDictionary>

<ResourceDictionary.MergedDictionaries>

<ResourceDictionary Source="TimePickerStyle.xaml"/>

</ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

</Window.Resources>

<Grid>

<local:TimePicker SelectedTime="{Binding MyTime}"/>

</Grid>

</Window>

在上面的示例中,我们使用了TimePicker控件,并将SelectedTime属性绑定到一个名为MyTime的属性。

使用第三方库

除了自定义控件,我们还可以使用第三方库来实现TimePicker的功能。其中一个流行的库是MahApps.Metro,它提供了一套现代化的控件和样式。以下是使用MahApps.Metro实现TimePicker的示例:

首先,我们需要通过NuGet安装MahApps.Metro库。然后,我们可以使用MetroDateTimePicker控件来实现TimePicker的功能。以下是一个示例:

xaml

<Window x:Class="TimePickerExample.MAInWindow"</p> XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

XMLns:x="http://schemas.microsoft.com/winfx/2006/xaml"

XMLns:Controls="http://metro.mahapps.com/winfx/xaml/controls"

Title="TimePicker Example" Height="450" Width="800">

<Grid>

<Controls:MetroDateTimePicker Format="Custom" CustomFormat="HH:mm" Value="{Binding MyTime}"/>

</Grid>

</Window>

在上面的示例中,我们使用了MetroDateTimePicker控件,并将Value属性绑定到一个名为MyTime的属性。

在本文中,我们介绍了如何在WPF (.NET 4)中实现TimePicker控件的功能。我们可以通过自定义控件和第三方库来实现类似的功能。希望这些示例能够帮助您在WPF应用程序中实现时间选择器的功能。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号