2011-04-18 14 views
38

मैं एक वर्ग व्यक्ति है कि इस तरह दिखता है बनाया है:कैसे कनवर्टर पैरामीटर के लिए विशिष्ट मूल्य पारित करने के लिए?

public class Person 
{ 
    public enum GenderType 
    { 
     Female, 
     Male 
    } 

    public string Name 
    { 
     get; set; 
    } 

    public GenderType? Gender 
    { 
     get; set; 
    } 
} 

इसके बाद, मुझे लगता है कि प्रकार व्यक्ति की वस्तुओं को पेश करने जा रहा है डेटा खाका बनाया।
यहाँ XAML कोड है:

<DataTemplate 
    x:Key="personTemplate" 
    DataType="{x:Type model:Person}"> 
    <StackPanel> 
    <RadioButton 
     Content="Female" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=???}"/> 
    <RadioButton 
     Content="Male" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=???}"/> 
    <RadioButton 
     Content="Not specified" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=???}"/> 
    </StackPanel> 
</DataTemplate> 
बेशक

कोड :) काम नहीं करेगा समस्या में ??? रों है कि मैं एक genderConverter कनवर्टर जो दिया मूल्य, यानी personObject.Gender तुलना करेंगे बनाना चाहते हैं, के खिलाफ Person.GenderType पैरामीटर में दिया गया मान दिया जाता है और true वापसी अगर मान से मेल।

मैं कैसे कनवर्टर पैरामीटर क्रमशः Person.GenderType.Female, Person.GenderType.Male और null पास, प्रथम, द्वितीय और तृतीय रेडियो बटन के लिए, बनाने के लिए पता नहीं है।

उत्तर

64

x:Static मार्कअप एक्सटेंशन का उपयोग कर प्रयास करें:

<RadioButton 
     Content="Female" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter={x:Static model:GenderType.Female}}"/> 

या, तो आप सिर्फ एक स्ट्रिंग गुजर सकता है और Enum.Parse का उपयोग कनवर्टर में enum प्रकार है कि स्ट्रिंग परिवर्तित करने के लिए:

<RadioButton 
     Content="Female" 
     IsChecked="{Binding Path=Gender, 
        Converter={StaticResource genderConverter}, 
        ConverterParameter=Female}"/> 

-

GenderType gender = (GenderType)Enum.Parse(typeof(GenderType), parameter.ToString()); 
6

आप अपने खुद के कनवर्टर बना रहे हैं के बाद से क्यों तुम सिर्फ नहीं है कनवर्टर पैरामीटर के रूप में एक नल bool भेजें?

तो male,female,not specified के लिए true,false,null भेजें।

आपको लगता है कि आप इस तरह से शुरुआत में अपने नाम स्थान संदर्भ के लिए करना होगा करने के लिए नहीं करना चाहते हैं:

xmlns:myNamespace="clr-namespace:MyNamespace" 

और फिर

<RadioButton 
    Content="Male" 
    IsChecked="{Binding Path=Gender, 
       Converter={StaticResource genderConverter}, 
       ConverterParameter=x:Static myNamespace:Person.GenderType.Male}"/> 
अपने radiobuttons के लिए