這是一個有趣的事情,你不能編輯DatePicker
模板。我通過查看source code發現,出於某種原因,它發生是因爲模板在主控制主題中定義 - Generic.xaml
並且它本身沒有定義BorderBrush
屬性。
下載軟件包 - 您將需要它在現有骨架上構建自定義控件。
您應該打開該主題文件,如果您查看DatePicker
的模板,則可以編輯BorderBrush
和BorderThickness
的值。有一點要記住 - 一旦你重新編譯源代碼,你需要確保你使用了正確的庫(當在主項目中引用時)。默認情況下,當您添加一個Microsoft.Phone.Controls.Toolkit單元時,它將引用在GAC中註冊的庫(假設您安裝了該工具包)並採用位於SDK文件夾中的庫 - 您不需要想要那個。請更改庫名稱或更改本地副本。
如果你需要這個教程,I just wrote one。
下面是修改的樣式(在源代碼中修改的更容易再利用):
<Style TargetType="controls:DatePicker">
<Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush" Value="Azure"/>
<Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="PickerPageUri" Value="/Microsoft.Phone.Controls.Toolkit;component/DateTimePickers/DatePickerPage.xaml"/>
<Setter Property="ValueStringFormat" Value="{}{0:d}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:DatePicker">
<StackPanel>
<ContentControl
Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}"
Foreground="{StaticResource PhoneSubtleBrush}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="12,0,12,-4"/>
<Button
x:Name="DateTimeButton"
Content="{TemplateBinding ValueString}"
Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
FontFamily="{TemplateBinding FontFamily}"
Foreground="{TemplateBinding Foreground}"
Height="72"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
這確實取決於 - 爲了將來重複使用,保持屬性打開並且能夠在沒有模板的情況下進行設置會更容易。 – 2011-02-04 16:03:25