我需要格式化UWP-DatePicker。我想要获得的是一个常见的DatePicker,它适合在网格中。
以下是我在GridColumn中嵌入DatePicker的方法:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "getEvtTypesCnt")]
Dictionary<string,EvtTypes> GetEvtTypesCnt();
public Dictionary<string,EvtTypes> GetEvtTypesCnt()
{
var data = new StHomeDBDataContext();
var list = new List<EvtTypes>();
foreach (var r in data.GetAllEvtTypesCnt_ToList())
{
list.Add(new EvtTypes
{
EvtType = r.evtType,
EvtCnt = Convert.ToInt32(r.evtCnt)
});
}
Dictionary<string,List<EvtType>> map =
new Dictionary<string,List<EvtType>>();
map.Add("evtType", list);
return map;
}
这是&#34;关键&#34;对StyleTemplate的更改:
<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.Setter.Value.ControlTemplate.StackPanel.Button.HorizontalAlignment =&#34; Left&#34; 我的DatePicker没有填充其父控件:
设置Style.Setter.Value.ControlTemplate.StackPanel.Button.HorizontalAlignment =&#34; Strech&#34;我的DatePicker与其父控件重叠:
当我将StyleTemplates LayoutRoot从StackPanel更改为Grid时,此行为也保持不变。
根据我的理解,RootLayout-Control应该从包含DatePicker的Grid继承它的大小,而Button应该从RootLayout获取它的大小,结果是在我的GridColumn中拟合。
编辑:
当仅将DatePickers HorizontalAlignment更改为Strech(并且在样式的abscense中)时,它将父网格方式重叠为远:
答案 0 :(得分:5)
实际上,您无需更改样式或Button
路线。您只需在两个控件中将HorizontalAlignment
设置为Stretch
即可。请注意,它的默认值为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
的默认MinWidth
296
和TimePicker
242
。因此,如果您可以将它们设置为较小的值,就像这样 -
<DatePicker Grid.Column="0" MonthFormat="{}{month.abbreviated(3)}" HorizontalAlignment="Stretch" MinWidth="80" />
<TimePicker Grid.Column="1" HorizontalAlignment="Stretch" MinWidth="80" />