我正在开发一个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();
}
}
}
}
}
请帮我找出问题所在。感谢。
答案 0 :(得分:1)
作为解决方法,请勿在listBoxItem DataTemplate中添加customDatePicker。 每当要启动控件时,请调用以下方法。您需要在页面的临时状态中保存所选listBoxItem的索引,以便在返回到页面后,在datepicker页面关闭时使用所选值填充列表框的正确项目。
private void LanchDatePicker()
{
datepicker = new CustomDatePicker
{
IsTabStop = false,
MaxHeight = 0,
Value = null
};
datepicker.ValueChanged += DatePicker_OnValueChanged;
LayoutRoot.Children.Add(datepicker);
datepicker.ClickTemplateButton();
}