मुझे पता है कि यह एक लंबे समय के लिए अब उत्तर दिया गया है, लेकिन DatePicker के पाठ संपत्ति को सीधे बाध्यकारी आसानी से कम सम्मान करने के लिए अपने नियंत्रण टेम्पलेट में TextBox की अनुमति देगा/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" भी आवश्यक है क्योंकि यह DatePickerTextBox टेम्पलेट का हिस्सा नहीं है नहीं है। केवल भागों है कि DatePickerTextBox शामिल हैं:
[TemplatePart(Name = DatePickerTextBox.ElementContentName, Type = typeof(ContentControl))]
public sealed partial class DatePickerTextBox : TextBox
private const string ElementContentName = "PART_Watermark";
और TextBoxBase से विरासत में मिला ...
[TemplatePart(Name = "PART_ContentHost", Type = typeof(FrameworkElement))]
public abstract class TextBoxBase : Control
internal const string ContentHostTemplateName = "PART_ContentHost";
वैकल्पिक समाधान: आप TextBox इस्तेमाल की अनदेखी और विरासत में मिला भाग आप का उपयोग करते हैं नियंत्रण की डिफ़ॉल्ट कार्यक्षमता को बदलने के बिना DatePickerTextBox को बदलने में सक्षम हो जाएगा।
<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>
स्रोत
2014-12-04 17:48:07
यह मिला। आपका बहुत बहुत धन्यवाद! –
मुझे इसके साथ कोई समस्या है: यह डिफ़ॉल्ट टेम्पलेट करता है कि छोटे/लंबे दिनांक प्रारूप का सम्मान नहीं करता है। – dex3703
@ dex3707 आप टेक्स्टिंग को स्ट्रिंगफॉर्मेट जोड़ सकते हैं और प्रारूप निर्दिष्ट कर सकते हैं उदा। <टेक्स्टबॉक्स x: नाम = "PART_TextBox" टेक्स्ट = "{बाध्यकारी पथ = चयनित दिनांक, सापेक्ष स्रोत = {सापेक्ष स्रोत पूर्वजों प्रकार = {x: टाइप डेटिकर}}, स्ट्रिंगफॉर्मैट = डी}" /> – Dominik