29238


現在、Visual Studio Community 2015でWPFの勉強中です。  
どうしても解決できない問題がありましたので質問させて頂きます。

下記のカレンダーコントロールのデザインを設定しているのですが、白い枠線が表示されてしまいます。  
その白い枠線を消す方法があればご教示頂きたいです。  
※見た目の問題です。

[code]

    <Calendar HorizontalAlignment="Left" Margin="535,230,0,0"VerticalAlignment="Top" Background="#FFE87352" BorderBrush="#FFE87352" BorderThickness="1" Height="172" Width="179" Padding="0" AllowDrop="True">
    <Calendar.RenderTransform>
        <ScaleTransform CenterX="0" CenterY="0" ScaleX="2.2" ScaleY="2.2" />
    </Calendar.RenderTransform>
    
[/code]


CC BY-SA 3.0
2016-09-29T07:46:03.090
29236
2016-09-30T05:01:12.497
18968
question
c# wpf
WPF Calendarコントロールの白い枠線を消したい


まず枠線の原因ですが、Visual Studio
2015であればライブエクスプローラーを使用して調査することが出来ます。デバッグを開始すると無効化していない限りウィンドウ上部中央に黒いコントロールが表示されますので、「選択を有効にする」をクリックして問題の要素を探します。

[![画像の説明をここに入力](https://i.stack.imgur.com/tSKrN.png)](https://i.stack.imgur.com/tSKrN.png)

結論から言うと画像で選択されている要素の枠線を非表示にすればよいのですが、コードを修正する前に「ライブ プロパティ
エクスプローラー」でプロパティを書き換えることが出来るので実際に変更しながら問題の要素を見つけると良いと思います。

それから修正方法ですが、`Control.Template`プロパティを変更します。デザイン時に要素を選択し、「プロパティ」ウィンドウで`Template`プロパティの右端にあるボタンをクリックし、「新しいリソースに変換」を実行します。

この方法で抽出された`ControlTemplate`を変更するとデザインを変更できるのですが、問題の要素は`Calendar`ではなく`CalendarItem`の中にあるため、`Template`の変換は2回行う必要があります。

この操作を2回行うと以下のようなテンプレートが出力されますので、選択されている`Border`のプロパティを変更することが出来ます。

[![画像の説明をここに入力](https://i.stack.imgur.com/dlIWj.png)](https://i.stack.imgur.com/dlIWj.png)

なおこの方法で抽出できるのは開発環境と同じテーマ(≒OS)でのスタイルだけで、変更するとOSでも同じデザインになってしまいます。その他のOSでも標準のテンプレートを変更したいのであれば、各種テーマのテンプレートを同様に抽出してテーマとして扱う必要があります。


CC BY-SA 3.0
2016-09-29T08:32:56.317
29238
2016-09-29T08:32:56.317
5750
29236
answer