■66862 / inTopicNo.3) |
Re[2]: WPF DataGrid 再描画 |
□投稿者/ コタロウ (2回)-(2013/05/31(Fri) 15:54:35)
|
2013/05/31(Fri) 15:59:49 編集(投稿者)
■No66861 (ひらぽん さん) に返信 返信ありがとうございます。
> ComboBoxカラムの内容によってセルの背景色を変更するようトリガーを使ったサンプルを書いてみました。 > http://d.hatena.ne.jp/hilapon/20130530/1369903705 > > 上記では問題なく背景色は変更されますが、もしかしてイベントハンドラで背景色を変更するよう実装してますか?
申し訳ありません、セルではなく、行全体の色を変更していました。
また、説明不足で申し訳ありません。下記に捕捉します。
public enum EntryType { NONE, YES, NO, }
public class Person { /// <summary> /// 名前 /// </summary> public string Name { get; set; } /// <summary> /// 参加 /// </summary> public EntryType Entry { get; set; } /// <summary> /// 備考 /// </summary> public string Other { get; set; } /// <summary> /// セル背景色 /// </summary> public string BackColor { get { if (Entry == EntryType.YES) return "Cyan"; else if (Entry == EntryType.NO) return "LightPink"; else return "White"; } } }
別クラス public ObservableCollection<Person> PersonList { get; set; }
上記が定義済みです。 ※PersonListには値が入っている前提です。
そこで、xamlで DataGridのItemsSourceにPersonListをバインドし、 DataGrid.ItemContainerStyleで、DataTriggerを指定しています。
<DataGrid ItemsSource="{Binding PersonList}"> <DataGrid.ItemContainerStyle> <Style TargetType="{x:Type DataGridRow}"> <Style.Triggers> <DataTrigger Binding="{Binding BackColor}" Value="Cyan"> <Setter Property="Background" Value="Cyan" /> </DataTrigger> <DataTrigger Binding="{Binding BackColor}" Value="LightPink"> <Setter Property="Background" Value="LightPink" /> </DataTrigger> <DataTrigger Binding="{Binding BackColor}" Value="White"> <Setter Property="Background" Value="White" /> </DataTrigger> </Style.Triggers> </Style> </DataGrid.ItemContainerStyle> </DataGrid>
上記処理では、Entryカラムを変更しても色変更されませんでした。 なにか、おかしなところはありますか?
Prismを使用していますが関係あるのでしょうか。 質問ばかりで申し訳ありません。
|
|