私は、負の値で赤色になるセルを持つ金融計算機であるデータグリッドを持っています。これは、コンバータ付きのDataTriggerを介して行われます。私はまた、システムハイライト選択色をオーバーライドしました。私の問題は今、私が行を選択すると、赤いセルが強調表示されないということです。WPF DataGrid。カスタムスタイルのセルをハイライト表示できない
は、私の知る限り理解してカスタムセルスタイルが選択よりも優先されます。私は自分のカスタム赤いセルを0.5の不透明度の青色のバーでハイライト表示したい。これをどうすれば解決できますか?
まあ、私は選択時にBGの色を変更し、フィットするように色を微調整するセルスタイルに余分なトリガーを追加することができますが、それはむしろ厄介です。あるいは、何とかここに不透明度のオーバーレイカラーを実装できますか?
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="LightBlue" />
</Trigger>
以下は完全なコードです。これは、軽量ではあるが完全に動作する例である。
XAML、セルのBackground
が実際に「オーバーライド」行の背景は、あなたがセルに別のトリガーを追加する必要がありますので、C#
using System;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace Datagrid_Cell_Highlight
{
public class TableData
{
public decimal IncomeDay { get; set; }
public decimal IncomeWeek { get; set; }
public decimal IncomeMonth { get; set; }
public decimal IncomeYear { get; set; }
}
public class ViewModel
{
public ObservableCollection<TableData> MainTable { get; set; }
public ViewModel()
{
MainTable = new ObservableCollection<TableData>
{
new TableData { IncomeDay = (decimal)1.11 },
new TableData { IncomeDay = (decimal)2.22 },
new TableData { IncomeDay = (decimal)-1.23 },
new TableData { IncomeDay = (decimal)-2.34 }
};
foreach (var table in MainTable)
{
table.IncomeWeek = table.IncomeDay * 7;
table.IncomeMonth = table.IncomeDay * 30;
table.IncomeYear = table.IncomeDay * 365;
}
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
public class ValueToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((value is decimal) && ((decimal)value < 0))
return true;
else return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
私は必要なものを正確にします。受け入れられました。 – Disodium