У меня есть таблица данных WPF, заполненная набором данных.Я пытаюсь изменить цвет шрифта данных в двух столбцах.У меня это работает, используя
REMOVED OLD CODE
Но он не очень хорошо держит цвета, особенно когда в сетке есть прокрутка.Это также медленно.
Возможно ли это сделать с помощью IValueCoverter
или есть какой-то другой более эффективный способ добиться этого?
РЕДАКТИРОВАТЬ
Я попытался по-новому взглянуть на эту проблему.Я создал класс для возврата bool, а затем с помощью этого bool определил, будет ли шрифт зеленым или красным.
CLASS
class EqualValuesColourConverter
{
public static void ChangeColours(int pQty, int pPri, int pTot, int gQty, int gPri, int gTot)
{
int iqty = pQty;
int gqty = gQty;
int iprice = pPri;
int gprice = gPri;
int itotal = pTot;
int gtotal = gTot;
bool fontColor = true;
if ((iqty == gqty) && (iprice == gprice) && (itotal == gtotal)) fontColor = true;
else fontColor = false;
}
}
CALL TO CLASS
string iqty = ((DataRowView)DgInvoiceLines.SelectedItem)["Inv_Quantity"].ToString();
string gqty = ((DataRowView)DgInvoiceLines.SelectedItem)["Grn_Quantity"].ToString();
string iprice = ((DataRowView)DgInvoiceLines.SelectedItem)["Inv_Price"].ToString();
string gprice = ((DataRowView)DgInvoiceLines.SelectedItem)["Grn_Price"].ToString();
string itotal = ((DataRowView)DgInvoiceLines.SelectedItem)["Inv_Total"].ToString();
string gtotal = ((DataRowView)DgInvoiceLines.SelectedItem)["Grn_Total"].ToString();
int pQty = int.Parse(iqty);
int pPri = int.Parse(iprice);
int pTot = int.Parse(itotal);
int gQty = int.Parse(gqty);
int gPri = int.Parse(gprice);
int gTot = int.Parse(gtotal);
EqualValuesColourConverter.ChangeColours(pQty, pPri, pTot, gQty, gPri, gTot);
XAML
<DataGridTextColumn Width="61" Header="Inv_Quantity" Binding="{Binding Inv_Quantity}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="Green"/>
<Style.Triggers>
<DataTrigger Binding="{Binding EqualValuesColourConverter}" Value="False" >
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
Я пытаюсь заставить его работать в двух столбцах, но он изменит цвет шрифта только в одном.
Кто-нибудь может помочь?