自定义日期选择器抛出异常windows电话

本文关键字:windows 电话 抛出异常 选择器 日期 自定义 | 更新日期: 2023-09-27 17:57:52

我正在开发一个windows phone应用程序。在这方面,我想要一个功能,这样,如果一个文本框获得焦点,应该打开日期选择器。类似地,另一个文本框将触发时间选择器。

我搜索发现,这可以通过编写自定义日期/时间选择器来实现。我成功地使时间选择器以这种方式工作,但当我尝试为日期选择器实现相同的方法时,我得到了以下异常。

"Error HRESULT E_FAIL has been returned from a call to a COM component."

时间和日期选择器的XAML代码如下所示。

<popUps:CustomTimePicker x:Name="timePicker" Visibility="Collapsed" Value="{Binding SelectedTime, Converter={StaticResource dateTimeConverter}, Mode=TwoWay}" />
<popUps:CustomDatePicker x:Name="datePicker" Visibility="Collapsed" />

我为其编写的自定义日期选择器类是

class CustomDatePicker : DatePicker
{
    public void ClickDateTemplateButton()
    {
        ApplyTemplate();
        Button button = (GetTemplateChild("DateTimeButton") as Button);
        if (button != null)
        {
            ButtonAutomationPeer peer = new ButtonAutomationPeer(button);
            if (peer != null)
            {
                IInvokeProvider provider = (peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider);
                if (provider != null)
                {
                    provider.Invoke();
                }
            }
        }
    }
}

请帮我找出哪里出了问题。谢谢

自定义日期选择器抛出异常windows电话

作为一种解决方法,不要在listBoxItem DataTemplate中添加customDatePicker。每当您想要启动控件时,请调用以下方法。返回页面后,当日期选择器页面关闭时,您需要将所选listBoxItem的索引保存在页面的临时状态中,以便用所选值填充列表框的正确项。

private void LanchDatePicker()
{
    datepicker = new CustomDatePicker
    {
        IsTabStop = false, 
        MaxHeight = 0,
        Value = null
    };
   datepicker.ValueChanged += DatePicker_OnValueChanged;
   LayoutRoot.Children.Add(datepicker);
   datepicker.ClickTemplateButton();
}