c# - कॉम्बो बॉक्स चयन चेंजेड ईवेंट देर से निकालता है



wpf xaml (1)

Text केवल SearchFilter की एकमात्र संपत्ति है जो आपके चयन में बदल गया SearchFilter में अपडेट नहीं होगा (मुझे क्यों मत पूछो)।

SelectedItem अच्छा होगा, SelectedValue अच्छा होगा (आपके मामले में, दोनों चयनित ComboBoxItem - WPF का उपयोग करने का कोई अच्छा तरीका नहीं है, लेकिन मैं आपका पुजारी नहीं हूं), और SelectedIndex

हम XAML (नीचे देखें) में एक छोटा परिवर्तन कर देंगे ताकि हम चयनित वैल्यू से SelectedValue स्ट्रिंग प्राप्त कर सकें।

private void SearchFilter_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //  Not sure there's any reason for this null check. 
    if (SearchFilter.SelectedValue != null)
    {
        var filter = SearchFilter.SelectedValue as String;

        switch (filter)
        {
            case "Full-Time":
                EmployeeAutoBox.ItemFilter = PersonFilter_Full;
                break;
            case "Part-Time":
                EmployeeAutoBox.ItemFilter = PersonFilter_Part;
                break;
            case "Retired":
                EmployeeAutoBox.ItemFilter = PersonFilter_Ret;
                break;
            case "Stockholder":
                EmployeeAutoBox.ItemFilter = PersonFilter_Stock;
                break;
            case "Terminated":
                EmployeeAutoBox.ItemFilter = PersonFilter_Term;
                break;
            default:
                EmployeeAutoBox.ItemFilter = PersonFilter;
                break;
        }
    }
}

एक्सएएमएल: indenting से एक तरफ एकमात्र बदलाव SelectedValuePath="Content" विशेषता जोड़ रहा है। यह क्या होता है, जब चयन में परिवर्तन होता है (और घटना के पहले उठाया जाता है), तो कॉम्बो बॉक्स अब चुने हुए इवेंट में ऑब्जेक्ट को देखेंगे, चाहे जो भी हो, और "सामग्री" नाम पर एक संपत्ति की तलाश करें। अगर यह पाता है कि, यह SelectedItem की Content का मूल्य SelectedItem के लिए उपयोग करेगा जो सामग्री आप दे रहे हैं वह स्ट्रिंग है: "पार्ट-टाइम", आदि। तो फिर

<ComboBox 
    Name="SearchFilter" 
    SelectedValuePath="Content"
    HorizontalAlignment="Right" 
    MinWidth="75" 
    Margin="0,3,0,3" 
    SelectionChanged="SearchFilter_SelectionChanged"
    >
    <ComboBoxItem Tag="Full-Time">Full-Time</ComboBoxItem>
    <ComboBoxItem>Part-Time</ComboBoxItem>
    <ComboBoxItem>Retired</ComboBoxItem>
    <ComboBoxItem>Stockholder</ComboBoxItem>
    <ComboBoxItem>Terminated</ComboBoxItem>
    <ComboBoxItem>None</ComboBoxItem>
</ComboBox>

मेरे WPF अनुप्रयोग में, मेरे पास एक कॉम्बो बॉक्स है जो मैं स्वत: पूर्णांक बॉक्स के लिए मदफिल्टर चुनने के लिए उपयोग कर रहा हूं। यहां कोड है:

XAML

<ComboBox 
     Name="SearchFilter" 
     HorizontalAlignment="Right" 
     MinWidth="75" Margin="0,3,0,3" 
     SelectionChanged="SearchFilter_SelectionChanged">
          <ComboBoxItem>Full-Time</ComboBoxItem>
          <ComboBoxItem>Part-Time</ComboBoxItem>
          <ComboBoxItem>Retired</ComboBoxItem>
          <ComboBoxItem>Stockholder</ComboBoxItem>
          <ComboBoxItem>Terminated</ComboBoxItem>
          <ComboBoxItem>None</ComboBoxItem>
</ComboBox>

सी#

private void SearchFilter_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (SearchFilter.SelectedItem != null)
        {
            if (SearchFilter.Text == "Full-Time")
            {
                EmployeeAutoBox.ItemFilter = PersonFilter_Full;
            }
            else if (SearchFilter.Text == "Part-Time")
            {
                EmployeeAutoBox.ItemFilter = PersonFilter_Part;
            }
            else if (SearchFilter.Text == "Retired")
            {
                EmployeeAutoBox.ItemFilter = PersonFilter_Ret;
            }
            else if (SearchFilter.Text == "Stockholder")
            {
                EmployeeAutoBox.ItemFilter = PersonFilter_Stock;
            }
            else if (SearchFilter.Text == "Terminated")
            {
                EmployeeAutoBox.ItemFilter = PersonFilter_Term;
            }
            else
            {
                EmployeeAutoBox.ItemFilter = PersonFilter;
            }
        }
    }

किसी कारण के लिए, फ़िल्टर बदल जाने के बाद चयन को बदल दिया जाता है उदाहरण के लिए, मैंने कॉम्बो बॉक्स को "फुल-टाइम" सेट किया है, सूची फिल्टर लागू नहीं किया जा रहा है। फिर मैंने कॉम्बो बॉक्स को "पार्ट-टाइम" पर सेट किया, फ़ुल-टाइम फिल्टर लागू किया जा रहा है, तब मैंने कॉम्बो बॉक्स को "सेवानिवृत्त" के लिए सेट किया है, पार्ट टाइम फिल्टर लागू किया जा रहा है आदि। आदि, ... मैंने कॉम्बो बॉक्स का इस्तेमाल किया है इससे पहले और यह आम तौर पर बॉक्स में वर्तमान में है, जो बॉक्स में नहीं था पर आधारित काम करता है.मैं यहाँ क्या याद आ रही है?





combobox