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

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

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

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

WPF

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

Q&A

解決済

1回答

1748閲覧

TextBlock の Style が DataGridCell 内に適用されない

yokoba

総合スコア2

C#

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

WPF

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

0グッド

0クリップ

投稿2020/05/18 04:33

DataGridCell の中の TextBlock に、 Resources で定義したの TextBlock のスタイルが適用されないのはなぜでしょうか?

DataGridTextColumn の ElementStyle プロパティに設定すれば、セルの中に適用されることは確認していますが、本件の疑問は動的にカラムを追加し、ElementStyle の指定が難しいケースの中から発生しました。

<Window.Resources> <Style BasedOn="{StaticResource {x:Type TextBlock}}" TargetType="TextBlock"> <Setter Property="Foreground" Value="Red" /> </Style> </Window.Resources> <Grid Margin="5"> <Grid.RowDefinitions> <RowDefinition Height="AUTO" /> <RowDefinition Height="*" /> </Grid.RowDefinitions> <TextBlock Text="ElementStyle のテスト" /> <DataGrid Grid.Row="1" AutoGenerateColumns="False" ItemsSource="{Binding Users}"> <DataGrid.Columns> <DataGridTextColumn Width="100" Binding="{Binding No}" Header="番号" /> <DataGridTextColumn Width="100" Binding="{Binding Name}" Header="名前" /> </DataGrid.Columns> </DataGrid> </Grid>

上記のコードを実行した場合、以下のようになり、セルの中には定義した Style が適用されません。

実行結果

カラムヘッダ(「番号」や「名前」)に Style が適用されたのと同じように、セルの中に適用されることを期待したのですが、意図した結果にはなりませんでした。

この理由をご存じの方がいたら、ご教授ください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

僕ごときでは理由はわからないのですが、DataGridCell以降のオブジェクトを見てないような感じがしました。
そこで、以下のようにするとDataGridCellのTextBlockにスタイルをあてることができました。
でも、この書き方だとどこかでエラーが出てそうですよね。
※~~一応Imageを表示してエラーが出ないことは確認しています。~~出力にエラーが出てました(Tooltip)

xaml

1 <Window.Resources> 2 <Style BasedOn="{StaticResource {x:Type TextBlock}}" TargetType="TextBlock"> 3 <Setter Property="Foreground" Value="Red" /> 4 </Style> 5 <Style TargetType="DataGridCell"> 6 <Setter Property="TextBlock.Foreground" Value="Red" /> 7 <Setter Property="TextBlock.ToolTip" Value="{Binding RelativeSource={RelativeSource Self},Path=Content.Text}"/> 8 </Style> 9 </Window.Resources>

投稿2020/05/18 14:04

編集2020/05/18 16:32
Hey_CH

総合スコア437

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

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

yokoba

2020/05/22 00:37

このような指定方法があったのですね。ありがとうございます! あと、Tooltipに関しても、私の環境で試したところ、エラーは出なかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問