यदि आप किसी विशेष सेल के आधार पर स्ट्राइकथ्रू को बाध्य करना चाहते हैं, तो आपके पास बाध्यकारी समस्या है, क्योंकि DataGridTextColumn.Binding केवल TextBox.Text की सामग्री को बदलता है।
<Setter Property="TextDecorations"
Value="{Binding RelativeSource={RelativeSource Self},
Path=Text,
Converter={StaticResource TextToTextDecorationsConverter}}" />
लेकिन अगर आप TextBox.Text से कुछ अलग करने के लिए बाध्य करने के लिए चाहते हैं, आप DataGridRow, है, जिसके माध्यम से बाध्य करने के लिए है: पाठ संपत्ति के मूल्य सब है, तो आप या तो टेक्स्ट बॉक्स में ही करने के लिए बाध्य कर सकते हैं की जरूरत है दृश्य पेड़ में टेक्स्टबॉक्स के माता-पिता। DataGridRow में एक आइटम प्रॉपर्टी है, जो पूरी पंक्ति के लिए उपयोग की जाने वाली पूरी वस्तु तक पहुंच प्रदान करती है।
<Setter Property="TextDecorations"
Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}},
Path =Item.SomeProperty,
Converter={StaticResource SomePropertyToTextDecorationsConverter}}" />
कनवर्टर इस तरह दिखता है, कुछ संभालने प्रकार बूलियन की है:
public class SomePropertyToTextDecorationsConverter: IValueConverter {
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture)
{
if (value is bool) {
if ((bool)value) {
TextDecorationCollection redStrikthroughTextDecoration =
TextDecorations.Strikethrough.CloneCurrentValue();
redStrikthroughTextDecoration[0].Pen =
new Pen {Brush=Brushes.Red, Thickness = 3 };
return redStrikthroughTextDecoration;
}
}
return new TextDecorationCollection();
}
public object ConvertBack(object value, Type targetType, object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
स्रोत
2013-11-17 13:37:42
यदि आप संपूर्ण स्तंभ कर रहे हैं, यह करने के लिए एक अच्छा तरीका है, आप एक अच्छी है व्यक्तिगत कोशिकाओं को करने का तरीका? इसके अलावा मेरे मामले में मुझे इसे कोड में करने की ज़रूरत है, क्योंकि मेरे पास DataGridTextColumn को बाध्य करने के लिए कुछ भी आसान नहीं है। – SDK
जैसा कि मैंने कहा था, कुछ कोशिकाओं तक सीमित करने के लिए डेटा ट्रिगर का उपयोग करें, और कोड के पीछे कोड करना कोई समस्या नहीं होनी चाहिए, यह केवल अनुवाद का मामला है। –