我正在尝试使用StackLayout点击日期绑定两个标签。 stacklayout有三个元素,一个用于显示日期的标签,另一个用于显示Month和Year的标签,第三个元素是一个将visiblity设置为false的datepicker。
我的XAML
<StackLayout>
<Label Text="End Date" Style="{StaticResource H2Style}" HorizontalOptions="Center"/>
<Label Text="26" HorizontalOptions="Center"/>
<Label Text="Mar 2017" HorizontalOptions="Center"/>
<DatePicker x:Name="endDatePicker" IsVisible="false" />
<StackLayout.Behaviors>
<b:EventToCommandBehavior EventName="DateTapped"
Command="{Binding DatePickerCommand}"
CommandParameter= "{x:Reference endDatePicker}" />
</StackLayout.Behaviors>
</StackLayout>
我想在点击stackLayout时显示datepicker对话框。
我的ViewModel
public class MyViewModel : BindableBase
{
public DelegateCommand<Object> DatePickerCommand { get; set; }
public MyViewModel()
{
DatePickerCommand = new DelegateCommand<Object>(DateTapped);
}
private void DateTapped(Object obj)
{
Device.BeginInvokeOnMainThread(() =>
{
if (endDatePicker.IsFocused)
endDatePicker.Unfocus();
endDatePicker.Focus();
});
}
}
但是我收到以下错误:
Objective-C exception thrown. Name: NSInternalInconsistencyException
Reason: Application windows are expected to have a root view
controller at the end of application launch
Native stack trace:
0 CoreFoundation 0x0000000104b7bb0b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010f757141 objc_exception_throw + 48
2 CoreFoundation 0x0000000104b7fcf2 +[NSException raise:format:arguments:] + 98
3 Foundation 0x0000000105732536 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
4 UIKit 0x0000000109adac46 -[UIApplication _runWithMainScene:transitionContext:completion:] + 3343
5 UIKit 0x0000000109ad77f3 -[UIApplication workspaceDidEndTransaction:] + 182
6 FrontBoardServices 0x000000011246f5f6 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24
7 FrontBoardServices 0x000000011246f46d -[FBSSerialQueue _performNext] + 186
8 FrontBoardServices 0x000000011246f7f6 -[FBSSerialQueue _performNextFromRunLoopSource] + 45
9 CoreFoundation 0x0000000104b21c01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
10 CoreFoundation 0x0000000104b070cf __CFRunLoopDoSources0 + 527
11 CoreFoundation 0x0000000104b065ff __CFRunLoopRun + 911
12 CoreFoundation 0x0000000104b06016 CFRunLoopRunSpecific + 406
13 UIKit 0x0000000109ad608f -[UIApplication _run] + 468
14 UIKit 0x0000000109adc134 UIApplicationMain + 159
15 ??? 0x00000001282fcd94 0x0 + 4969188756
16 ??? 0x00000001282fc9dd 0x0 + 4969187805
如果有人可以帮助我,我将不胜感激
答案 0 :(得分:1)
问题可能是任何线程中某处未处理的异常。 您可能希望通过以下方式捕获真正的异常 - Forms with Prism: Application windows are expected to have a root VC
为什么不使用日期选择器作为来自ACR User Dialogs for Xamarin and Windows
的对话框,而不是试图将注意力集中在一个主要是意外行为的不可见控件上