C# wpf中是否有时间选择器可用的控件?

C# wpf中是否有时间选择器可用的控件?,c#,wpf,xaml,controls,C#,Wpf,Xaml,Controls,我有一个用户控件。我使用MaskedText框从WPF工具包中输入时间值。 在xaml中: 周一 星期二 结婚 清华大学 星期五 坐 太阳 政务司司长: private TimeSpan FindTimeSpan(字符串从,字符串到) { var fromTime=DateTime.MinValue; var toTime=DateTime.MinValue; var TimeTrue=DateTime.MaxValue; string strnew=string.Empty; if(Dat

我有一个用户控件。我使用MaskedText框从WPF工具包中输入时间值。 在xaml中:


周一
星期二
结婚
清华大学
星期五
坐
太阳
政务司司长:

private TimeSpan FindTimeSpan(字符串从,字符串到)
{
var fromTime=DateTime.MinValue;
var toTime=DateTime.MinValue;
var TimeTrue=DateTime.MaxValue;
string strnew=string.Empty;
if(DateTime.TryParse(from,out fromTime))
{
if(DateTime.TryParse(to,out toTime))
{
如果(toTime>fromTime)
{
返回到时间。减去(从时间);
}
其他的
{
TimeSpan spantarget=TimeSpan.Parse(“23:59”);
TimeSpan spanfrom=TimeSpan.Parse(from);
TimeSpan expectspam=TimeSpan.Parse(to);
DateTime d1=DateTime.MinValue.Add(spantarget);
DateTime d2=DateTime.MinValue.Add(spanfrom);
var CollectTime=d1减去(d2);
var sR=CollectTime.Add(expectspam);
返回CollectTime.Add(expectspam);
}
}
}
返回新的TimeSpan();
}
私有void txt\u totalhours\u TextChanged(对象发送者,textchangedventargs e)
{
如果(null==txt_总小时数| | null==txt_开始时间| | null==txt_结束时间)
返回;
if(-1txt_endtime.Text.IndexOf(“|”))
{
返回;
}
TimeSpan=FindTimeSpan(txt_starttime.Text,txt_endtime.Text);
span=TimeSpan.FromTicks(span.Ticks*ck\u计数);
字符串时间=span.TotalHours.ToString();
txt_totalhours.Text=Math.Round(Convert.ToDecimal(time),2.ToString();
CurrentHVACUsageHour.TotalHours=Math.Round(Convert.ToDecimal(time),2.ToString();
返回;
}
根据工作日的决定,我从“FromTime”中减去“ToTime”,然后乘以工作日的选择。我已经有效地做到了这一点

我正在为触摸屏之类的设备设计这个。因此,定时器控制应该是全方位的,并且易于使用


我在新的时间控制中需要相同的计算。任何帮助都是值得的。提前感谢。

再次查看问题
<StackPanel Margin="5" Orientation="Horizontal" 
            Grid.Row="0" Grid.Column="0">                  
    <CheckBox Name="ckMon" Click="ckMon_Click">MON</CheckBox>
    <CheckBox Name="ckTue" Click="ckTue_Click">TUE</CheckBox>
    <CheckBox Name="ckWed" Click="ckWed_Click">WED</CheckBox>
    <CheckBox Name="ckThu" Click="ckThu_Click">THU</CheckBox>
    <CheckBox Name="ckFri" Click="ckFri_Click">FRI</CheckBox>
    <CheckBox Name="ckSat" Click="ckSat_Click">SAT</CheckBox>
    <CheckBox Name="ckSum" Click="ckSum_Click">SUN</CheckBox>
</StackPanel>

<msk:MaskedTextBox Grid.Row="0" Grid.Column="1"                            
                    Name="txt_starttime" 
                    Mask="00:00"                            
                    TextChanged="txt_totalhours_TextChanged"
                    Text="{Binding Path=FromTime}"/>
<msk:MaskedTextBox Grid.Row="0" Grid.Column="2"
                    Name="txt_endtime" 
                    Mask="00:00"                             
                    TextChanged="txt_totalhours_TextChanged"
                    Text="{Binding Path=ToTime}"/>
<TextBox Grid.Row="0" Grid.Column="3"
            Name="txt_totalhours" 
            TextChanged="txt_totalhours_TextChanged"
            Text="{Binding Path=TotalHours}"/> 
private TimeSpan FindTimeSpan(string from, string to)
{
    var fromTime = DateTime.MinValue;
    var toTime = DateTime.MinValue;
    var TimeTrue = DateTime.MaxValue;
    string strnew = string.Empty;

    if (DateTime.TryParse(from, out fromTime))
    {
        if (DateTime.TryParse(to, out toTime))
        {
            if (toTime > fromTime)
            {
                return toTime.Subtract(fromTime);
            }
            else
            {
                TimeSpan spantarget = TimeSpan.Parse("23:59");
                TimeSpan spanfrom = TimeSpan.Parse(from);
                TimeSpan expectspam = TimeSpan.Parse(to);
                DateTime d1 = DateTime.MinValue.Add(spantarget);
                DateTime d2 = DateTime.MinValue.Add(spanfrom);                        
                var CollectTime = d1.Subtract(d2);
                var sR = CollectTime.Add(expectspam);
                return CollectTime.Add(expectspam);
            }
        }
    }

    return new TimeSpan();
}

private void txt_totalhours_TextChanged(object sender, TextChangedEventArgs e)
{
    if (null == txt_totalhours || null == txt_starttime || null == txt_endtime)
        return;

    if (-1 < txt_starttime.Text.IndexOf("_") || -1 > txt_endtime.Text.IndexOf("_"))
    {
        return;
    }

    TimeSpan span = FindTimeSpan(txt_starttime.Text, txt_endtime.Text);
    span = TimeSpan.FromTicks(span.Ticks * ck_count);
    string time = span.TotalHours.ToString();
    txt_totalhours.Text = Math.Round(Convert.ToDecimal(time), 2).ToString();
    CurrentHVACUsageHour.TotalHours = Math.Round(Convert.ToDecimal(time), 2).ToString();
    return;
 }