2009-07-09 7 views
6

मैं एक स्ट्रिंग मान के लिए मेरे पाठ बॉक्स बाध्य कर दिया हैसी #/WPF कस्टम स्ट्रिंग्स प्रदर्शित करें (जैसे की जगह "0" string.empty के साथ)

Text="{Binding AgeText, Mode=TwoWay}" 

के माध्यम से मैं कैसे के लिए string.empty या "" प्रदर्शित कर सकते हैं स्ट्रिंग "0", और अन्य सभी तारों को उनके मूल मूल्य के साथ?

किसी भी मदद के लिए धन्यवाद!

चीयर्स

पुनश्च: एक ही रास्ता स्ट्रिंग के लिए एक कस्टम ViewModel होगा .. लेकिन मैं, सीधे XAML में यह किसी भी तरह क्या करना चाहते हैं तो यह संभव है।

उत्तर

7

मुझे लगता है कि व्यूमोडेल का उपयोग करने के बगल में एकमात्र तरीका कस्टम वैल्यू कनवर्टर बना रहा है।

तो मूल रूप से अपनी पसंद कर रहे हैं:

ViewModel:

private string ageText; 
public string AgeText{ 
    get{ 
     if(ageText.equals("0")) 
      return string.empty; 

     return ageText; 
    } 
    ... 
} 

ValueConverter:

public class AgeTextConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value.Equals("0")) 
      return string.Empty; 

     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

    } 
} 
+2

मैं कस्टम के साथ जाना चाहते हैं ValueConverter –

+0

धन्यवाद एक बहुत! ValueConverter बस वही है जो मैं खोज रहा था। चीयर्स –

+0

मुझे भी :) इसका क्लीनर;) – Arcturus

4

के बाद से उम्र संपत्ति स्पष्ट रूप से एक नंबर यहाँ, होगा जाने के लिए एक अन्य तरीका है आयु को एक int के रूप में बेनकाब करें और StringFormatBinding की विशेषता का उपयोग करें:

Text="{Binding Age, Mode=TwoWay, StringFormat='{}{0:#}'}" 
+0

आप तेजी से थे :) मैं यहां समस्या देख सकता हूं कि यदि कोई उपयोगकर्ता Value string.empty में प्रवेश करता है, तो मेरे अन्य वर्गों को इसके लिए "0" की आवश्यकता होगी या वे क्रैश हो जाएंगे, इसलिए मुझे लगता है कि जाने का सबसे अच्छा तरीका है ValueConverter। चीयर्स –