पृष्ठभूमि के आधार पर।WPF डेटाग्रिड सेल रंग पूर्व सेल मूल्य
मैं एक स्टॉक ट्रेडिंग एप्लिकेशन विकसित कर रहा हूं। जो स्पष्ट रूप से बाजार की घड़ी है। मैं Datagrid
का उपयोग कर इस बाजार घड़ी को विकसित कर रहा हूं।
ग्रिड क्या करता है? यह एक स्टॉक के मूल्य बिंदु प्रदर्शित करता है। प्रत्येक बार जब स्टॉक मूल्य बढ़ता है तो विशेष सेल फोरग्राउंड हरा बदल जाता है यदि यह घटता है तो यह लाल हो जाता है।
मैंने क्या किया? मैंने मूल्य कनवर्टर विधि और मल्टीबाइंडिंग
समस्या का उपयोग करने का प्रयास किया। मूल्य कनवर्टर केवल वर्तमान मूल्य देता है। मैं उस कनवर्टर को पुराना मान कैसे पास कर सकता हूं।
कोड:
<wpfTlKit:DataGrid.CellStyle>
<Style TargetType="{x:Type wpfTlKit:DataGridCell}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource myHighlighterConverter}"
>
<MultiBinding.Bindings>
<Binding RelativeSource="{RelativeSource Self}"></Binding>
<Binding Path="Row" Mode="OneWay"></Binding>
<Binding ElementName="OldData" Path="Rows"></Binding>
</MultiBinding.Bindings>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
</wpfTlKit:DataGrid.CellStyle>
कनवर्टर
public class HighlighterConverter : IMultiValueConverter
{
#region Implementation of IMultiValueConverter
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values[1] is DataRow)
{
//Change the background of any cell with 1.0 to light red.
var cell = (DataGridCell)values[0];
var row = (DataRow)values[1];
var columnName = cell.Column.SortMemberPath;
if (row[columnName].IsNumeric() && row[columnName].ToDouble() == 1.0)
return new SolidColorBrush(Colors.LightSalmon);
}
return SystemColors.AppWorkspaceColor;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new System.NotImplementedException();
}
#endregion
}
public static class Extensions
{
public static bool IsNumeric(this object val)
{
double test;
return double.TryParse(val.ToString(), out test);
}
public static double ToDouble(this object val)
{
return Convert.ToDouble(val);
}
}
धन्यवाद, लेकिन तुम मुझे एक उदाहरण के साथ प्रदान कर सकते हैं। डब्ल्यूपीएफ के लिए नया होने के नाते मैं समझ नहीं पा रहा हूं कि डेटाग्रिड को ऑब्जेक्ट कैसे बाध्य करें। – Megatron
मुझे नहीं लगता कि 'DataRowVersion' समाधान है। यह तब उपयोगी होता है जब आपको डेटाबेस और स्थानीय संशोधित संस्करण से प्राप्त संस्करण तक पहुंच की आवश्यकता होती है। ओपी चाहता है डेटाबेस से पुराना मूल्य और डेटाबेस से नया मूल्य है। – svick