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>
これは本当に依存しています。将来の再利用のために、プロパティを開いたままにして、テンプレートなしで設定できるようにする方が簡単です。 –
Silverlight Toolkitチームにソースコードの変更を提案することに同意しますが、一般的には、コントロールを簡単に再テンプレートすることができれば、第3の部分ライブラリをカスタマイズすることは長期的にはより保守性があります:) –
私はそれが問題だと思います個人的な意見 - すべての新しいプロジェクトでコントロールを再テンプレートしたくないですが、もう一度 - 実際に(互換性のあるテーマを使用して)コントロールをカスタマイズする必要がある頻度によって異なります。 –