如何只使用xaml重置TimePicker?

nwlqm0z1  于 2023-05-11  发布在  其他
关注(0)|答案(1)|浏览(193)

我希望单击按钮可以重置时间选择器的更改,以便取消选择小时、分钟和AM/PM。我知道如何通过click方法处理程序来实现这一点,但我想知道是否有一种更短的方法只使用xaml。
我玩了一下装订,但没有得到它:

<TimePicker
    x:Name="ExitTime"
    Header="Exit Time"
    MinuteIncrement="1" />
<Button
    Content="Reset"
    Click="{Binding ElementName=ExitTime, Path=SelectedTime, Mode=OneWay}"/>
baubqpgj

baubqpgj1#

您将始终需要这段代码来重置TimePicker,除非您从绑定目标重置它。

.SelectedTime = null;

如果你只是不想把它放在Page的代码后面:

选项A:

创建一个UserControl或一个自定义控件,它有一个重置按钮,你可以重置它里面的TimerPicker。我觉得是这样。

选项B:

创建自定义控件:

public class TimePickerEx : TimePicker
{
    public void Reset() => SelectedTime = null;
}

您可以使用XAML重置TimePicker,如下所示:

<Page
    x:Class="TimePickerExample.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:TimePickerExample"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Horizontal">
        <local:TimePickerEx x:Name="ExitTime" />
        <Button Content="Reset" Click="{x:Bind ExitTime.Reset}" />
    </StackPanel>

</Page>

但您需要安装Microsoft.Xaml.Behaviors.WinUI.ManagedNuGet包,因此这可能不是最短的方法。
感谢@SimonMourier在评论中的提示,你不需要行为。你可以只绑定Reset方法。

相关问题