質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

2720閲覧

WPFのCalenderコントロールの曜日の色を変えたい

ma-sato

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/11/17 09:21

WPF(C#)を最近始めた初心者です。

wpfcalendarを使用して曜日の文字色を変更しようとしていますがうまくいきません。

やる気駆動型エンジニアの備忘録さんの
https://iyemon018.hatenablog.com/entry/2016/05/10/231206
を見ながらやってみましたが、ディクショナリ?を使用してるので
xamlファイル内でのstyle設定ではなく、
どう見ればよいかわからず困っています。

実現したい内容は以下の通りです。(認識がずれていれば指摘していただけると幸いです。)

・xamlファイル1つでstyleを設定すること。
・曜日のみ水色で表示したい。
・CSファイルは極力使わないで簡潔にしたい。

教えていただけますでしょうか。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TN8001

2020/11/17 11:20

`Blend for Visual Studio`は入っています? 入っていれば非常に簡単にできるのですが。。。 テンプレートがかなりの量になり(1万字以内にぎりぎり収めたつもりが)回答を投稿できませんでした(^^;
ma-sato

2020/11/18 01:01

回答ありがとうございます。 残念ながらBlend for Visual Studioが使えない環境ですので VisualStudio2019しか入っていません。 テンプレートがかなりの量ということはやはりカレンダー全体のテンプレートから 一部変更する形をとる以外ないということでしょうか。 それでしたらひとまずはあきらめようかと考えています。
TN8001

2020/11/18 04:29

全体ではなくCalendarItemStyleだけですがそれでも160行くらいあります^^; インデントをなくせば投稿はできそうですが。。
ma-sato

2020/11/21 01:04

連絡が遅れて申し訳ございません。 私が見たMSNのサイトだと600行越えで全く理解が追い付かないものだったので そうなのだと思ってしまいました。 もしよろしければインデントのない状態でいただけますでしょうか。 自分なりに解読しながら試したいと考えています。
guest

回答2

0

ベストアンサー

14行目<TextBlock Foreground="SkyBlue"のところです。

xml

1<Window 2 x:Class="Questions304819.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 SizeToContent="WidthAndHeight"> 6 <Window.Resources> 7 <Style x:Key="CalendarItemStyle1" TargetType="{x:Type CalendarItem}"> 8 <Setter Property="Margin" Value="0,3,0,3"/> 9 <Setter Property="Template"> 10 <Setter.Value> 11 <ControlTemplate TargetType="{x:Type CalendarItem}"> 12 <ControlTemplate.Resources> 13 <DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}"> 14 <TextBlock Foreground="SkyBlue" FontWeight="Bold" FontSize="9.5" FontFamily="Verdana" HorizontalAlignment="Center" Margin="0,6,0,6" Text="{Binding}" VerticalAlignment="Center"/> 15 <!-- ↑ここ--> 16 </DataTemplate> 17 </ControlTemplate.Resources> 18 <Grid x:Name="PART_Root"> 19 <Grid.Resources> 20 <SolidColorBrush x:Key="DisabledColor" Color="#A5FFFFFF"/> 21 </Grid.Resources> 22 <VisualStateManager.VisualStateGroups> 23 <VisualStateGroup x:Name="CommonStates"> 24 <VisualState x:Name="Normal"/> 25 <VisualState x:Name="Disabled"> 26 <Storyboard> 27 <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_DisabledVisual"/> 28 </Storyboard> 29 </VisualState> 30 </VisualStateGroup> 31 </VisualStateManager.VisualStateGroups> 32 <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1"> 33 <Border BorderBrush="#FFFFFFFF" BorderThickness="2" CornerRadius="1"> 34 <Grid> 35 <Grid.Resources> 36 <ControlTemplate x:Key="PreviousButtonTemplate" TargetType="{x:Type Button}"> 37 <Grid Cursor="Hand"> 38 <VisualStateManager.VisualStateGroups> 39 <VisualStateGroup x:Name="CommonStates"> 40 <VisualState x:Name="Normal"/> 41 <VisualState x:Name="MouseOver"> 42 <Storyboard> 43 <ColorAnimation Duration="0" To="#FF73A9D8" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="path"/> 44 </Storyboard> 45 </VisualState> 46 <VisualState x:Name="Disabled"> 47 <Storyboard> 48 <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)" Storyboard.TargetName="path"/> 49 </Storyboard> 50 </VisualState> 51 </VisualStateGroup> 52 </VisualStateManager.VisualStateGroups> 53 <Rectangle Fill="#11E5EBF1" Opacity="1" Stretch="Fill"/> 54 <Grid> 55 <Path x:Name="path" Data="M288.75,232.25 L288.75,240.625 L283,236.625 z" Fill="#FF333333" HorizontalAlignment="Left" Height="10" Margin="14,-6,0,0" Stretch="Fill" VerticalAlignment="Center" Width="6"/> 56 </Grid> 57 </Grid> 58 </ControlTemplate> 59 <ControlTemplate x:Key="NextButtonTemplate" TargetType="{x:Type Button}"> 60 <Grid Cursor="Hand"> 61 <VisualStateManager.VisualStateGroups> 62 <VisualStateGroup x:Name="CommonStates"> 63 <VisualState x:Name="Normal"/> 64 <VisualState x:Name="MouseOver"> 65 <Storyboard> 66 <ColorAnimation Duration="0" To="#FF73A9D8" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="path"/> 67 </Storyboard> 68 </VisualState> 69 <VisualState x:Name="Disabled"> 70 <Storyboard> 71 <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)" Storyboard.TargetName="path"/> 72 </Storyboard> 73 </VisualState> 74 </VisualStateGroup> 75 </VisualStateManager.VisualStateGroups> 76 <Rectangle Fill="#11E5EBF1" Opacity="1" Stretch="Fill"/> 77 <Grid> 78 <Path x:Name="path" Data="M282.875,231.875 L282.875,240.375 L288.625,236 z" Fill="#FF333333" HorizontalAlignment="Right" Height="10" Margin="0,-6,14,0" Stretch="Fill" VerticalAlignment="Center" Width="6"/> 79 </Grid> 80 </Grid> 81 </ControlTemplate> 82 <ControlTemplate x:Key="HeaderButtonTemplate" TargetType="{x:Type Button}"> 83 <Grid Cursor="Hand"> 84 <VisualStateManager.VisualStateGroups> 85 <VisualStateGroup x:Name="CommonStates"> 86 <VisualState x:Name="Normal"/> 87 <VisualState x:Name="MouseOver"> 88 <Storyboard> 89 <ColorAnimation Duration="0" To="#FF73A9D8" Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="buttonContent"/> 90 </Storyboard> 91 </VisualState> 92 <VisualState x:Name="Disabled"> 93 <Storyboard> 94 <DoubleAnimation Duration="0" To=".5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="buttonContent"/> 95 </Storyboard> 96 </VisualState> 97 </VisualStateGroup> 98 </VisualStateManager.VisualStateGroups> 99 <ContentPresenter x:Name="buttonContent" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" TextElement.Foreground="#FF333333" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1,4,1,9" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 100 </Grid> 101 </ControlTemplate> 102 </Grid.Resources> 103 <Grid.ColumnDefinitions> 104 <ColumnDefinition Width="Auto"/> 105 <ColumnDefinition Width="Auto"/> 106 <ColumnDefinition Width="Auto"/> 107 </Grid.ColumnDefinitions> 108 <Grid.RowDefinitions> 109 <RowDefinition Height="Auto"/> 110 <RowDefinition Height="*"/> 111 </Grid.RowDefinitions> 112 <Button x:Name="PART_PreviousButton" Grid.Column="0" Focusable="False" HorizontalAlignment="Left" Height="20" Grid.Row="0" Template="{StaticResource PreviousButtonTemplate}" Width="28"/> 113 <Button x:Name="PART_HeaderButton" Grid.Column="1" FontWeight="Bold" Focusable="False" FontSize="10.5" HorizontalAlignment="Center" Grid.Row="0" Template="{StaticResource HeaderButtonTemplate}" VerticalAlignment="Center"/> 114 <Button x:Name="PART_NextButton" Grid.Column="2" Focusable="False" HorizontalAlignment="Right" Height="20" Grid.Row="0" Template="{StaticResource NextButtonTemplate}" Width="28"/> 115 <Grid x:Name="PART_MonthView" Grid.ColumnSpan="3" HorizontalAlignment="Center" Margin="6,-1,6,6" Grid.Row="1" Visibility="Visible"> 116 <Grid.ColumnDefinitions> 117 <ColumnDefinition Width="Auto"/> 118 <ColumnDefinition Width="Auto"/> 119 <ColumnDefinition Width="Auto"/> 120 <ColumnDefinition Width="Auto"/> 121 <ColumnDefinition Width="Auto"/> 122 <ColumnDefinition Width="Auto"/> 123 <ColumnDefinition Width="Auto"/> 124 </Grid.ColumnDefinitions> 125 <Grid.RowDefinitions> 126 <RowDefinition Height="Auto"/> 127 <RowDefinition Height="Auto"/> 128 <RowDefinition Height="Auto"/> 129 <RowDefinition Height="Auto"/> 130 <RowDefinition Height="Auto"/> 131 <RowDefinition Height="Auto"/> 132 <RowDefinition Height="Auto"/> 133 </Grid.RowDefinitions> 134 </Grid> 135 <Grid x:Name="PART_YearView" Grid.ColumnSpan="3" HorizontalAlignment="Center" Margin="6,-3,7,6" Grid.Row="1" Visibility="Hidden"> 136 <Grid.ColumnDefinitions> 137 <ColumnDefinition Width="Auto"/> 138 <ColumnDefinition Width="Auto"/> 139 <ColumnDefinition Width="Auto"/> 140 <ColumnDefinition Width="Auto"/> 141 </Grid.ColumnDefinitions> 142 <Grid.RowDefinitions> 143 <RowDefinition Height="Auto"/> 144 <RowDefinition Height="Auto"/> 145 <RowDefinition Height="Auto"/> 146 </Grid.RowDefinitions> 147 </Grid> 148 </Grid> 149 </Border> 150 </Border> 151 <Rectangle x:Name="PART_DisabledVisual" Fill="{StaticResource DisabledColor}" Opacity="0" RadiusY="2" RadiusX="2" Stretch="Fill" Stroke="{StaticResource DisabledColor}" StrokeThickness="1" Visibility="Collapsed"/> 152 </Grid> 153 <ControlTemplate.Triggers> 154 <Trigger Property="IsEnabled" Value="False"> 155 <Setter Property="Visibility" TargetName="PART_DisabledVisual" Value="Visible"/> 156 </Trigger> 157 <DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}" Value="Year"> 158 <Setter Property="Visibility" TargetName="PART_MonthView" Value="Hidden"/> 159 <Setter Property="Visibility" TargetName="PART_YearView" Value="Visible"/> 160 </DataTrigger> 161 <DataTrigger Binding="{Binding DisplayMode, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Calendar}}}" Value="Decade"> 162 <Setter Property="Visibility" TargetName="PART_MonthView" Value="Hidden"/> 163 <Setter Property="Visibility" TargetName="PART_YearView" Value="Visible"/> 164 </DataTrigger> 165 </ControlTemplate.Triggers> 166 </ControlTemplate> 167 </Setter.Value> 168 </Setter> 169 </Style> 170 </Window.Resources> 171 <StackPanel Orientation="Horizontal"> 172 <Calendar x:Name="custom" CalendarItemStyle="{DynamicResource CalendarItemStyle1}" /> 173 <Calendar x:Name="normal" /> 174 </StackPanel> 175</Window>

投稿2020/11/21 03:18

編集2023/07/25 13:06
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma-sato

2020/11/22 02:12

できました!ありがとうございます。 想像していましたがやはりテンプレートは大きいですね。 今後違うところを変更する場合、このテンプレートからやりたいと思います。 ありがとうございました!
guest

0

ディクショナリ?と言うのはリソースディクショナリの事でしょうか?
メイン画面XAML内のWindowのリソースとしても記述できます。

xaml

1<Window> 2 <Window.Resources> 3 <!-- ここに書く --> 4 </Window.Resources> 5</Window>

この中に記述するのでも動作すると思います、そうすればxamlは1つになりますが駄目ですか?

投稿2020/11/18 02:15

編集2020/11/18 02:31
ikarimame

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma-sato

2020/11/21 01:07

いろいろ試してみて<Window.Resources>内に書けばよいことはわかりました。 少し違いますが、リソースディクショナリはCでいうヘッダファイルの扱いに近いのかなと感じました。 ありがとうございます。
Zuishin

2020/11/21 01:12

少し違うというか、共通点はほぼありません。
ma-sato

2021/08/25 06:38 編集

今更ですが、どの観点で共通点がほぼないと言っているのか分かりませんが、私が言っている共通点とは別な場所に定義を書いてそれを読み込むという観点です。 大きなブロックとしてみると他の全てが同じになってしまいますが、私の中ではその表現がしっくりきたのでそう伝えています。
Zuishin

2021/08/25 06:46 編集

その表現がしっくりきたのであれば、わかっていないと思います。 「わかったからしっくりきた」のではなく、「その表現がしっくりきたからわかったと思った」という順序でしょう?
ma-sato

2021/08/25 06:48

しばらく経ってからの返答に対応していただきありがとうございます。 初心者であることは間違い無いので、どうわかってないか教えていただけたら嬉しいです。
ma-sato

2021/08/25 07:20

「わかったからしっくりきた」のではなく、「その表現がしっくりきたからわかったと思った」という順序でしょう? これは人それぞれの感性なのでは? 感じ方はそれぞれじゃ無いでしょうか? 違うと言うので有ればどう違うか教えて欲しいものです。
Zuishin

2021/08/25 07:27

しばらくというのはどういう意味ですか? あなたのように 9 カ月待つべきだったということですか? 忘れるので気づいたときに返信しました。 まああなたが豚とあなたとが似ているというなら感性の問題なのでしょう。 どちらも目が二つあるはずです。
ma-sato

2021/08/25 07:36

初期の質問から豚は出てきませんが。。。 もしかして怒ってますか? まー、豚も哺乳類ですからね。あなたと一緒です。
Zuishin

2021/08/25 07:38

豚も哺乳類だからあなたと一緒という人に説明するのは難しいですね。 多分味噌もくそも全部一緒に見えていると思うので。 食中毒を起こさないように気を付けてください。
ma-sato

2021/08/25 07:41

とりあえず説明お願いします。 私以外も見れるはずなので、 私が分からなくても他の誰かの役には立てるのでは無いでしょうか?
Zuishin

2021/08/25 07:44

おや? 何か怒ってます? レジストリやデータベースもあなたの言う同じ共通点を持ってますがぁ、それを同じという理解では色々と困るんじゃないかなと思っただけです。 どうしても同じと思いたいなら面倒なのでそれでいいですから、「アウトプット」とやらをするのだけはやめておいてくださいね。
ma-sato

2021/08/25 07:59

怒ってないです。 後共通点の話もそれくらいにしたらどうでしょうか、 「リソースディクショナリはCでいうヘッダファイルの扱いに近い」 がほぼ違う点について後学のために説明願います。
Zuishin

2021/08/25 08:01

豚も哺乳類だからあなたと一緒という人に説明するのは難しいですね。
ma-sato

2021/08/25 08:04

さっきも書きましたが、 私以外の誰かのためにです。
Zuishin

2021/08/25 08:06

他の人は大丈夫じゃないですかね。 豚も哺乳類だからあなたと一緒という人はあんまりいないので。
ma-sato

2021/08/25 08:09

知らない人はたくさんいるんじゃないですか? あなたの頭の中みたいに
Zuishin

2021/08/25 08:16 編集

普通の人はあなたが思ってるより賢いと思いますよ。 勝ち目もないのがわかりきってるのにマウントしようとする愚かな人ばかりじゃないですから。
ma-sato

2021/08/25 08:19

えっと、マウントも取ってませんよ、そう聞こえたならごめんなさい。 何を勝ち負けとしているのも分かりません。 ネタバラシをすると暇だったので煽ってみました。 綺麗に釣られてくれて感謝してます。 そろそろ業務時間が終わるので失礼します。 今後とも他の方には良い回答をお願いしますね。 私には内容のない回答でただ威圧しているように見えました。 ではお達者で
ma-sato

2021/08/25 08:24

最後に ブレイブブラウザいいですよ。
Zuishin

2021/08/25 08:25

> えっと、マウントも取ってませんよ、そう聞こえたならごめんなさい。 > 何を勝ち負けとしているのも分かりません。 > ネタバラシをすると暇だったので煽ってみました。 > 綺麗に釣られてくれて感謝してます。 > そろそろ業務時間が終わるので失礼します。 > 今後とも他の方には良い回答をお願いしますね。 > 私には内容のない回答でただ威圧しているように見えました。 > ではお達者で なるほど。 業務時間に煽って釣っただけでマウントをとったわけではなかったんですね。
ma-sato

2021/08/25 08:30

そうです。 ごめんなさいね。 ????
Zuishin

2021/08/25 08:33

世の中のほとんどの人はあなたより賢いことが証明できて良かったです。
ma-sato

2021/08/25 08:33

真面目な話、 WPFのディクショナリの引き込み方とcのヘッダファイルの引き込み方がどう違うか気になるので後ほど別質問しますね。 その時はお手柔らかに
ma-sato

2021/08/25 08:39

これで切ろうとおもったけど。。。 ほとんどって言葉好きだなーー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問