Windows Phone 8 Toolkit の CustomMessageBox のスタイルをより正確に設定できるかどうか疑問に思っていました。
この場合、キャプションと実際のメッセージ/ボタンのテキスト/境界線で異なる前景色を使用したいと考えています。
Box を XAML でも定義できますか?
Windows Phone 8 Toolkit の CustomMessageBox のスタイルをより正確に設定できるかどうか疑問に思っていました。
この場合、キャプションと実際のメッセージ/ボタンのテキスト/境界線で異なる前景色を使用したいと考えています。
Box を XAML でも定義できますか?
頑張りすぎてはいけません。必要なのは、 をサブクラス化CustomMessageBox
し、個別の前景色の依存関係プロパティを追加してから、既定のコントロール テンプレートを変更することだけです。(既定のテンプレートではForeground
、タイトル、キャプション、メッセージ、およびボタンに同じプロパティが使用されていることがわかります)。
例として、タイトルの色を見てみましょう。最初に依存関係プロパティを追加します。
public class ExtendedCustomMessageBox : CustomMessageBox
{
public Brush TitleForeground
{
get { return (Brush)GetValue(TitleForegroundProperty); }
set { SetValue(TitleForegroundProperty, value); }
}
public static readonly DependencyProperty TitleForegroundProperty =
DependencyProperty.Register("TitleForeground", typeof(Brush), typeof(ExtendedCustomMessageBox), null);
public CustomMessage()
: base()
{
DefaultStyleKey = typeof(CustomMessageBox);
}
}
ここで、コントロール テンプレートの適切な部分を変更します。a を使用しTemplateBinding
て、新しいプロパティを参照します。
<TextBlock
x:Name="TitleTextBlock"
Text="{TemplateBinding Title}"
Foreground="{TemplateBinding TitleForeground}"
Visibility="Collapsed"
Margin="24,16,24,-6"
FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>
(フル コントロール テンプレートは、WP8 ツールキット ダウンロードのファイルにありますThemes\Generic.xaml
。プロジェクトのリソースにコピー アンド ペーストして、変更するだけです。)