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

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

新規登録して質問してみよう
ただいま回答率
85.37%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

XAML

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

WPF

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

Q&A

解決済

1回答

2672閲覧

WPF[MVVM] DataGridの1セルだけに色を付けたい

Base

総合スコア28

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

MVVM

MVVM(Model View ViewModel)は構築上のデザインパターンで、表現ロジック(ViewModel)によってデータ(Model)からページ(View)を分離させます。

XAML

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

WPF

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

0グッド

0クリップ

投稿2021/08/27 02:08

前提・実現したいこと

MVVMにて、DataGridの実装をしています。
1つのセルに色を付ける、、、ということを進めているのですが、色が反映されない状態で困っています。処理としては、色を変更する予定もないため、XAMLのみで実装をするように考えているのですが、色が反映されない状況です。(参考URLにはXAMLのみで対応可能と書いてあった)

調査しても手詰まりでしたので、ご教授いただければ幸いです。
よろしくお願いいたします。

発生している問題・エラーメッセージ

1セルに色がつかない。

該当のソースコード

XAML

1<Window x:Class="WpfApp4.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:WpfApp4" 7 xmlns:vm="clr-namespace:WpfApp4.VM" 8 xmlns:i="http://schemas.microsoft.com/xaml/behaviors" 9 xmlns:l="http://schemas.livet-mvvm.net/2011/wpf" 10 mc:Ignorable="d" 11 Title="MainWindow" Height="450" Width="800"> 12 <Window.DataContext> 13 <vm:MainWindowVM/> 14 </Window.DataContext> 15 <Grid> 16 <Grid.RowDefinitions> 17 <RowDefinition Height="9*"/> 18 <RowDefinition Height="1*"/> 19 </Grid.RowDefinitions> 20 <TabControl Grid.Row="0"> 21 <TabItem Header="TabA"> 22 <DataGrid x:Name="dg" ItemsSource="{Binding vmDataInfo}" IsReadOnly="True" AutoGenerateColumns = "False"> 23 <i:Interaction.Triggers> 24 <i:EventTrigger EventName="CurrentCellChanged"> 25 <l:LivetCallMethodAction MethodTarget="{Binding}" MethodName="CurrentCellChanged" MethodParameter="{Binding ElementName=dg, Path=CurrentItem}"/> 26 </i:EventTrigger> 27 </i:Interaction.Triggers> 28 <DataGrid.Columns> 29 <DataGridTextColumn Header="選択" Width="50" 30 Binding="{Binding SelectIndex}" /> 31 <DataGridTextColumn Header="項目" Width="150" 32 Binding="{Binding ParamName}" /> 33 <DataGridTextColumn Header="設定値" Width="100" 34 Binding="{Binding Param1}" /> 35 <DataGridTextColumn Header="変更値" Width="100" 36 Binding="{Binding Param2}" > 37 <DataGridTextColumn.ElementStyle> 38 <Style TargetType="{x:Type TextBlock}"> 39 <Style.Triggers> 40 <Trigger Property="Text" Value="John"> 41 <Setter Property="Background" Value="#FFE3E87B"/> 42 </Trigger> 43 </Style.Triggers> 44 </Style> 45 </DataGridTextColumn.ElementStyle> 46 </DataGridTextColumn> 47 </DataGrid.Columns> 48 </DataGrid> 49 </TabItem> 50 <TabItem Header="TabB"> 51 <DataGrid> 52 53 </DataGrid> 54 </TabItem> 55 </TabControl> 56 <Grid Grid.Column="0" Grid.Row="1"> 57 <Button HorizontalAlignment="Left" Margin="10,0,0,0" Content="データ保存" Width="80" Height="30" > 58 <i:Interaction.Triggers> 59 <i:EventTrigger EventName="Click"> 60 <l:LivetCallMethodAction MethodTarget="{Binding}" MethodName="SaveButton" /> 61 </i:EventTrigger> 62 </i:Interaction.Triggers> 63 </Button> 64 </Grid> 65 </Grid> 66 67</Window>

試したこと

下記を参考に実装
https://codehero.jp/c%23/5549617/change-datagrid-cell-colour-based-on-values

補足情報(FW/ツールのバージョンなど)

VisualStudio2019
Livet/.NET4.5.2

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

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

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

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

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

TN8001

2021/08/27 03:16

リンクを提示するなら怪しげな翻訳サイトではなく元ネタを出してください。 [c# - Change DataGrid cell colour based on values - Stack Overflow](https://stackoverflow.com/questions/5549617/change-datagrid-cell-colour-based-on-values 質問単体で理解できるようにViewModel等のコードも提示してください。 長すぎて記載できない場合は本件と関係ない部分(CurrentCellChangedとかSaveButtonとか)を、xaml・C#コードともに消してください。 > 1セルに色がつかない。 どこに色を付けようとしているかわかっておられるんでしょうか? 参考コードはセルの値がJohnの時にLightGreenにしています。 Param2にJohnが入ることはあるんですか?
Base

2021/08/30 08:18

ご指摘、ありがとうございます。 そういうことだったんですね。深くコードを理解できていなかったようです。 自己解決にて、改善したコード、載せたいと思います。ありがとうございます。
guest

回答1

0

自己解決

Trigger Propertyを指定しないことで解決!
色付けする条件がなければ、<Trigger Property="Text" Value="John">は不要だった。

XAML

1 <DataGridTextColumn.ElementStyle> 2 <Style TargetType="{x:Type TextBlock}"> 3 <Setter Property="Background" Value="#FFE3E87B"/> 4 </Style> 5 </DataGridTextColumn.ElementStyle>

投稿2021/08/30 08:21

Base

総合スコア28

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

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

TN8001

2021/08/30 10:03

つまり1列(カラム)全部の色を変えたかったのですね。 セルというとひとつひとつの入力場所?のことを想像しますので、通じていませんでした。
Base

2021/09/08 01:30

はい。カラム全部の色を変えたかったです。 書き方、難しかったですね。伝わるように注意して書きたいと思います。 ご指摘いただいたことで、理解が出来ました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問