Это интересно, что вы не можете редактировать шаблон 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 должно быть предложено изменение исходного кода, но в целом настройка библиотек третьей части, когда вы можете легко переконфигурировать элемент управления, более удобна в обслуживании в конечном итоге :) –
Я думаю, это вопрос личное мнение. Я бы не захотел переформатировать элемент управления в каждом новом проекте, но опять же - это зависит от того, как часто вам нужно настроить готовый к работе (с использованием совместимой темы) контроль. –