ButtonDout内的CalendarDatePicker

时间:2015-11-15 16:24:00

标签: c# xaml uwp

我想在Button弹出窗口中使用CalendarDatePicker,如下所示:

<Button>
   <Button.Flyout>
      <Flyout>
         <StackPanel>
             <CalendarDatePicker x:Name="calendar"></CalendarDatePicker>                                          
             <Button Click="Button_Click">Save</Button>
         </StackPanel>
      </Flyout>
   </Button.Flyout>
</Button>

但是当我点击日历时,整个Flyout消失了。我的目标是Windows 10 UWP应用。任何想法如何解决?谢谢。

1 个答案:

答案 0 :(得分:0)

你可能无法在 Flyout 中使用 CalendarDatePicker - 只要你选择一个选项就会关闭flyout,在这种情况下,一旦你点击控制显示日历,弹出按钮与打开的日历一起关闭(如果你拿着一个控件,你甚至可能会看到它一段时间)。在这种情况下,您可以使用例如弹出 ContentDialog

XAML:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Button Name="showCalndarButton" Content="Show PopUP" Click="showCalndarButton_Click"/>
    <Popup Name="calendarPopup">
        <StackPanel>
            <CalendarDatePicker x:Name="calendar"></CalendarDatePicker>
            <Button Click="Button_Click">Save</Button>
        </StackPanel>
    </Popup>

    <ContentDialog Name="calendarDialog">
        <StackPanel>
            <CalendarDatePicker x:Name="secondCalendar"></CalendarDatePicker>
            <Button Click="Button_Click">Save</Button>
        </StackPanel>
    </ContentDialog>
</Grid>

代码背后:

private void Button_Click(object sender, RoutedEventArgs e)
{
    // some logic

    // calendarPopup.IsOpen = false;
    calendarDialog.Hide();
}

private async void showCalndarButton_Click(object sender, RoutedEventArgs e)
{
    // calendarPopup.IsOpen = true;
    await calendarDialog.ShowAsync();
}

在这种情况下 - ContentDialog Popup ,你必须自己设计。