Mi rendo conto che questo è stato risposto per molto tempo, ma legandosi direttamente alla proprietà Text s' il DatePicker permetterà al TextBox nel modello di controllo per onorare facilmente il Breve/Formato lungo fornito da DatePicker.
<DatePicker>
<DatePicker.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBox Text="{Binding Text, RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DatePicker.Resources>
</DatePicker>
Il "PART_TextBox" non è necessario anche perché non è parte del modello DatePickerTextBox. Le uniche parti che il DatePickerTextBox contiene sono:
[TemplatePart(Name = DatePickerTextBox.ElementContentName, Type = typeof(ContentControl))]
public sealed partial class DatePickerTextBox : TextBox
private const string ElementContentName = "PART_Watermark";
ed ereditato da TextBoxBase ...
[TemplatePart(Name = "PART_ContentHost", Type = typeof(FrameworkElement))]
public abstract class TextBoxBase : Control
internal const string ContentHostTemplateName = "PART_ContentHost";
Soluzione alternativa: Se si opta fuori utilizzando il TextBox e utilizzare la parte ereditata voi sarà in grado di modificare il DatePickerTextBox senza alterare la funzionalità predefinita del controllo.
<DatePicker>
<DatePicker.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"/>
<ScrollViewer Name="PART_ContentHost"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DatePicker.Resources>
</DatePicker>
fonte
2014-12-04 17:48:07
L'ho capito. Grazie mille! –
Ho un problema con questo: non rispetta il formato di data breve/lungo che il modello predefinito fa. – dex3703
@ dex3707 È possibile aggiungere StringFormat alla TextBinding e specificare il formato, ad es. –
Dominik