C# 如何正确格式化DatePicker样式模板
我需要格式化一个UWP日期选择器。我想得到的是一个普通的日期选择器,它适合于网格 下面是我如何将DatePicker嵌入GridColumn的:C# 如何正确格式化DatePicker样式模板,c#,visual-studio,xaml,datepicker,uwp,C#,Visual Studio,Xaml,Datepicker,Uwp,我需要格式化一个UWP日期选择器。我想得到的是一个普通的日期选择器,它适合于网格 下面是我如何将DatePicker嵌入GridColumn的: <Grid Grid.Row="1" Grid.Column="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Gri
<Grid Grid.Row="1" Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<DatePicker Grid.Column="0"
HorizontalAlignment="Left"
MonthFormat="{}{month.abbreviated(3)}"
Date="{Binding AppointmentStartDateProxy, Mode=TwoWay}"
DateChanged="DatePicker_DateChanged"
Style="{StaticResource DatePickerStyle1}">
<DatePicker.IsEnabled>
<Binding Path="Closed" Converter="{StaticResource negationConverter}"/>
</DatePicker.IsEnabled>
</DatePicker>
</Grid>
以下是样式模板的“关键”更改:
<Style x:Key="DatePickerStyle1" TargetType="DatePicker">
<.../>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DatePicker">
<StackPanel x:Name="LayoutRoot" Margin="{TemplateBinding Padding}" HorizontalAlignment="Stretch" >
<ContentPresenter x:Name="HeaderContentPresenter"
x:DeferLoadStrategy="Lazy"
Visibility="Collapsed"
Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}"
Margin="0,0,0,8"
Foreground="{ThemeResource SystemControlForegroundBaseHighBrush}"
AutomationProperties.AccessibilityView="Raw" />
<Button x:Name="FlyoutButton"
HorizontalAlignment="Left"
Style="{StaticResource DatePickerFlyoutButtonStyle}"
Foreground="{TemplateBinding Foreground}"
Background="{TemplateBinding Background}"
IsEnabled="{TemplateBinding IsEnabled}"
HorizontalContentAlignment="Stretch" />
设置Style.Setter.Value.ControlTemplate.StackPanel.Button.HorizontalAlignment=“Left”时
my DatePicker未填充其父控件:
设置Style.Setter.Value.ControlTemplate.StackPanel.Button.HorizontalAlignment=“Strech”时,我的日期选择器与其父控件重叠:
当我将StyleTemplates LayoutRoot从StackPanel更改为Grid时,此行为也保持不变
在我的理解中,RootLayout控件应该从包含日期选择器的网格继承其大小,按钮应该从RootLayout获取其大小,从而适合我的GridColumn
编辑:
当仅将日期选择器水平对齐方式更改为Strech(以及在样式取消的情况下)时,它将与父网格重叠到远处:
实际上,您不需要更改样式或
按钮的对齐方式。您只需在两个控件中将水平对齐
设置为拉伸
。请注意,它的默认值是Left
<Grid x:Name="LayoutRoot">
<Grid Width="800">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<DatePicker Grid.Column="0" MonthFormat="{}{month.abbreviated(3)}" HorizontalAlignment="Stretch" />
<TimePicker Grid.Column="1" HorizontalAlignment="Stretch" />
</Grid>
</Grid>
嗨,贾斯汀,看到我的编辑上面,它没有工作的预期。
<DatePicker Grid.Column="0" MonthFormat="{}{month.abbreviated(3)}" HorizontalAlignment="Stretch" MinWidth="80" />
<TimePicker Grid.Column="1" HorizontalAlignment="Stretch" MinWidth="80" />