すべて私はWPF DataGrid
をループして、各ループごとにaを使用して、誤ったセルの背景色を変更しようとしています。私は多くの質問をチェックしたが、まだ十分な答えを見つけていない。私はこれまで持っていることは問題WPF DataGridを使用したループ処理foreachを使用した
public void RunChecks()
{
const int baseColumnCount = 3;
foreach (DataRowView rv in dataGrid.Items)
{
for (int i = baseColumnCount; i < dataGrid.Columns.Count; i++)
{
if (!CheckForBalancedParentheses(rv.Row[i].ToString()))
{
Color color = (Color)ColorConverter.ConvertFromString("#FF0000");
row.Background = new SolidColorBrush(color); // Problem!
}
}
}
}
である私のDataGrid
の行のBackground
色を変更するために、私はDataRowView
rv
でascociated DataGridRow
オブジェクトを使用する必要があるということです。
オブジェクトrv
(DataRowView
)からDataGridRow
への参照を取得するにはどうすればよいですか?
お時間をいただきありがとうございます。
編集。以下のアドバイスに基づいて、マウスオーバーイベントで動作し、関連するセルの前後のフォントを設定する次のスタイルを持つようになりました。しかし、私は本当に上のコードでランタイムにセルにバックカラーを適用する方法については失われています。あなたがWPF、常に直接UI成果物へのアクセス回避で作業しているときにXMLスタイルが
<Window.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background" Value="Red" />
<Setter Property="FontWeight" Value="ExtraBold" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
お時間をいただきありがとうございます。私はあなたの助言を取り、読書を始めます。私はまた色とりどりの列に、また運がないように努力してきました。私は別の質問[ここ](http://stackoverflow.com/questions/15644105/change-the-background-color-of-entire-column-of-wpf-datagrid-at-runtime)を借りることができたら担当者を欲しい。もう一度ありがとう... – MoonKnight
@Killercam:考え方は行と列で同じです。 UIオブジェクトが、直接アクセスまたはバインディングを介して変更できるプロパティ(この場合はcolor)を提供している場合は、modelviewオブジェクトからバインディングを使用します。 – Tigran
ありがとうございます。 Styles、Triggersなどの本を読んだことがありました。私は今、イベントでマウスの色を変える行を持っています。しかし、私はどのようにこれらのスタイルを使用して実行時にコードから必要な色にセル/行を変更するために失われています。あなたがここで何か助けを与えることができれば、私はそのスタイルを示すために質問を編集しました。 – MoonKnight