Soy consciente de que ha sido contestada por un largo tiempo, pero uniéndose directamente a la propiedad Text del DatePicker 's a permitir la TextBox en su plantilla de control en honor fácilmente el Breve/Formato largo proporcionado por 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>
El "PART_TextBox" Tampoco es necesario porque no es parte de la plantilla DatePickerTextBox. Las únicas partes que la DatePickerTextBox contiene son:
[TemplatePart(Name = DatePickerTextBox.ElementContentName, Type = typeof(ContentControl))]
public sealed partial class DatePickerTextBox : TextBox
private const string ElementContentName = "PART_Watermark";
y heredado de TextBoxBase ...
[TemplatePart(Name = "PART_ContentHost", Type = typeof(FrameworkElement))]
public abstract class TextBoxBase : Control
internal const string ContentHostTemplateName = "PART_ContentHost";
Solución alternativa: Si se excluye el uso de la TextBox y utilizar la parte hereditaria que podrá alterar el DatePickerTextBox sin alterar la funcionalidad predeterminada del control.
<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>
Eso lo tiene. ¡Muchas gracias! –
Tengo un problema con esto: no respeta el formato de fecha corta/larga que tiene la plantilla predeterminada. – dex3703
@ dex3707 Puede agregar StringFormat al Enlace de texto y especificar el formato, p. –
Dominik