如何将光标放置在C#中日期选择器控件的第一个位置?

如何将光标放置在C#中日期选择器控件的第一个位置?,c#,wpf,datepicker,.net-4.5,C#,Wpf,Datepicker,.net 4.5,我在wpf表单上有一个datepicker控件(伪装为00-00-0000)。如果datepicker是空的,那么我希望无论在哪里单击datepicker文本框,光标始终位于第一个位置。我尝试在MouseDown事件上使用SelectionStart属性(设置为0),但没有成功。谁能给个主意吗?如果你需要更多信息,请告诉我。非常感谢您的帮助。谢谢 您应该找到TextBox元素并订阅事件PreviewMouseUp 1) 添加带有加载的事件的日期选择器: <DatePicker Name="

我在wpf表单上有一个datepicker控件(伪装为00-00-0000)。如果datepicker是空的,那么我希望无论在哪里单击datepicker文本框,光标始终位于第一个位置。我尝试在MouseDown事件上使用SelectionStart属性(设置为0),但没有成功。谁能给个主意吗?如果你需要更多信息,请告诉我。非常感谢您的帮助。谢谢

您应该找到
TextBox
元素并订阅事件
PreviewMouseUp

1) 添加带有加载的
事件的
日期选择器

<DatePicker Name="myDatePicker" Loaded="MyDatePicker_OnLoaded" /> 

例如,您是否尝试过像使用文本框一样做同样的事情。。确定长度,然后根据差异设置焦点/选择开始。。如果情况变得更糟,谷歌搜索底层的文本框可以完成这项工作,你可能想看看这个,以便知道如何改变文本框的行为。我不反对,所以不确定你的意思。我所做的只是提出一个建议。。这么说吧。。你能展示一些你尝试过的代码吗。。thanks@Ranud-谢谢你的建议。你从那里学到了一些关于日期采集器的东西。@kmatyzaszek-效果很好!!非常感谢!!真棒的回答。我一直试图使用SelectionStart和CaretIndex(设置为0)在Mousedown上执行此操作,但没有成功。再次感谢。@kmatyzaszek我只是在做更多的测试时注意到了一些东西。当我加载表单并第一次触摸/单击datepicker字段的文本框时,mouseup事件确实会触发,但光标不会移动到第一个位置。当我第二次点击文本框时,它会移动,然后它会继续正常工作。起初,它似乎起了作用,可能是因为我不知何故双击了datepicker文本框控件。作为旁注,我看到仅在PreviewMouseUp事件上设置caretindex=0与您的解决方案的工作原理相同。我现在解决了这个问题。在parttextbox(DatePickerTextBox)的LostMouseCapture事件中将caretindex设置为0可以实现这一点。
private void MyDatePicker_OnLoaded(object sender, RoutedEventArgs e)
{
    var tb = (DatePickerTextBox)myDatePicker.Template.FindName("PART_TextBox", myDatePicker);
    if (tb != null)
    {
        tb.PreviewMouseUp += (s, args) =>
        {
            tb.CaretIndex = 0;
        };
    }
}