Tôi nhận ra điều này đã được trả lời trong một thời gian dài bây giờ, nhưng ràng buộc trực tiếp đến thuộc tính Text của s DatePicker sẽ cho phép TextBox trong mẫu kiểm soát của bạn để dễ dàng tôn vinh Ngắn/Định dạng dài được cung cấp bởi 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>
"PART_TextBox" cũng không cần thiết vì nó không phải là một phần của mẫu DatePickerTextBox. Các bộ phận duy nhất mà các DatePickerTextBox chứa là:
[TemplatePart(Name = DatePickerTextBox.ElementContentName, Type = typeof(ContentControl))]
public sealed partial class DatePickerTextBox : TextBox
private const string ElementContentName = "PART_Watermark";
và thừa hưởng từ TextBoxBase ...
[TemplatePart(Name = "PART_ContentHost", Type = typeof(FrameworkElement))]
public abstract class TextBoxBase : Control
internal const string ContentHostTemplateName = "PART_ContentHost";
Giải pháp thay thế: Nếu bạn chọn không tham gia sử dụng TextBox và sử dụng PHẦN thừa hưởng bạn sẽ có thể thay đổi DatePickerTextBox mà không thay đổi chức năng mặc định của điều khiển.
<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>
Nguồn
2014-12-04 17:48:07
Đã nhận. Cảm ơn nhiều! –
Tôi gặp vấn đề với điều này: nó không tôn trọng định dạng ngày/dài mà mẫu mặc định thực hiện. – dex3703
@ dex3707 Bạn có thể thêm StringFormat vào Textbinding và chỉ định định dạng, ví dụ: –
Dominik