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

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

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

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

WPF

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

Q&A

解決済

3回答

6021閲覧

DataGridTextColumn の ElementStyle の一括指定について

yokoba

総合スコア2

C#

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

WPF

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

1グッド

0クリップ

投稿2020/05/12 14:13

私が作成しているアプリケーションで使っている全DataGridの全DataGridTextColumnにおいて、
現状、以下の指定をしています。

<DataGrid ItemsSource="{Binding DataList}"> <DataGrid.Resources> <Style x:Key="SelfToolTip" BasedOn="{StaticResource {x:Type TextBlock}}" TargetType="TextBlock"> <Setter Property="ToolTipService.ToolTip" Value="{Binding Text, RelativeSource={RelativeSource Self}}" /> </Style> </DataGrid.Resources> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding No}" ElementStyle="{StaticResource SelfToolTip}" ・・・★ Header="No" /> <DataGridTextColumn Binding="{Binding Name}" ElementStyle="{StaticResource SelfToolTip}" ・・・★ Header="Name" /> <DataGridTextColumn Binding="{Binding Id}" ElementStyle="{StaticResource SelfToolTip}" ・・・★ Header="Id" /> </DataGrid.Columns> </DataGrid>

上記の★の個所において、すべての個所で、ElementStyleを指定しています。
これを一括指定するため、以下のスタイルを定義したのですが、正しく動作してくれません。

<Style TargetType="{x:Type DataGridTextColumn}"> <Setter Property="ElementStyle"> <Setter.Value> <Style BasedOn="{StaticResource {x:Type TextBlock}}" TargetType="{x:Type TextBlock}"> <Setter Property="ToolTipService.ToolTip" Value="{Binding Text, RelativeSource={RelativeSource Self}}" /> </Style> </Setter.Value> </Setter> </Style>

どうしたら、★のように個別指定ではなく、一括指定できるでしょうか?

TN8001👍を押しています

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

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

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

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

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

guest

回答3

0

DataGridTextColumn のスタイルを変更するより、DataGridTemplateColumn を使って
CellTemplate(私はCellEditingTemplateはあまり使わない)にDataTemplateを指定したほうが
簡単で応用が利きます。

投稿2020/05/14 05:55

hihijiji

総合スコア4152

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

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

0

目的がTooltipを表示するだけなら以下でできそうですけど、やっぱ何かあるんですよね?

xaml

1<Window x:Class="TeraDataGridElementStyle.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:TeraDataGridElementStyle" 7 mc:Ignorable="d" 8 Title="MainWindow" Height="450" Width="800"> 9 <Grid> 10 <DataGrid ItemsSource="{Binding DataList}" AutoGenerateColumns="False"> 11 <DataGrid.Resources> 12 <Style TargetType="DataGridCell"> 13 <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},Path=Content.Text}"/> 14 </Style> 15 </DataGrid.Resources> 16 <DataGrid.Columns> 17 <DataGridTextColumn Binding="{Binding No}" Header="No" /> 18 <DataGridTextColumn Binding="{Binding Name}" Header="Name" /> 19 <DataGridTextColumn Binding="{Binding Id}" Header="Id" /> 20 </DataGrid.Columns> 21 </DataGrid> 22 </Grid> 23</Window>

投稿2020/05/12 15:28

Hey_CH

総合スコア437

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

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

yokoba

2020/05/18 04:38

実際にやりたいことをすべて書き出すと複雑になってしまうため、割愛していました。もともとは、動的にカラムを追加するようなケースで「追加されたカラムに関しても ElementStyle を設定したい」といったような要求でした。それに関連して質問を追加させていただいたので、よければご覧ください。https://teratail.com/questions/262592
guest

0

ベストアンサー

出ているであろうエラー内容の通りなのですが、FrameworkElementFrameworkContentElement でないとStyleは書けないです。

添付プロパティでどうにかするという案がありましたが、xamlで減った行数以上にcsが増えるのでちょっとイヤですね^^;
wpf - Why can't I style a DataGridTextColumn? - Stack Overflow

投稿2020/05/12 15:06

TN8001

総合スコア9862

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

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

yokoba

2020/05/18 01:41

情報ありがとうございました。 なかなかスマートに記述する方法はないのですね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問