2010-08-02 17 views
17
<ComboBox Grid.Row="1" Grid.Column="0" Width="Auto" Name="cmbBudgetYear"> 
    <ComboBoxItem Content="2009" /> 
    <ComboBoxItem Content="2010" /> 
    <ComboBoxItem Content="2011" /> 
    <ComboBoxItem Content="2012" /> 
</ComboBox> 

चयनित चयनित आइटम को चालू कोड में वर्तमान वर्ष में कैसे सेट किया जाए?WPF कॉम्बोबॉक्स

कुछ की तरह ...

cmbBudgetYear.SelectedItem = cmbBudgetYear.Items(
             get the item with the Now.Year.ToString) 

उत्तर

33

ऐसा करने के कई तरीके मौजूद हैं, लेकिन आपके उदाहरण के लिए, मैं ComboBox टैग बदल जाएगा इस प्रकार है:

<ComboBox Grid.Row="1" Grid.Column="0" 
      Name="cmbBudgetYear" SelectedValuePath="Content"> 

मैं attribute- जोड़ा परिभाषा SelectedValuePath="Content"। उसके बाद आप एक इसी स्ट्रिंग, उदा .:

cmbBudgetYear.SelectedValue = "2009"; 

देखभाल कि मान एक स्ट्रिंग होना चाहिए ले लो साथ मान सेट कर सकते हैं। आपके उदाहरण के लिए,

cmbBudgetYear.SelectedValue = DateTime.Now.Year.ToString(); 

एक अतिरिक्त विचार

का उपयोग तुम वैसे भी कोड-पीछे का उपयोग करते हैं, यह एक संभावना पूर्णांकों के साथ बता गया भरने के लिए होगा। Someting की तरह:

for(int y=DateTime.Now.Year;y>DateTime.Now.Year-10;y--){ 
cmbBudgetYear.Items.Add(y); 
} 

आप मूल्यों

cmbBudgetYear.SelectedValue = 2009; 

तरह extremly सरल का चयन कर सकते ..then ... और आप भी अन्य लाभ होगा। या

cmbBudgetYear.Text = "2010"; 

, परिवर्तन के बाद मूल्य में हो रही है, हालांकि के लिए, और शायद यह है क्योंकि मैं SelectedValuePath="Content" हर जगह निर्धारित नहीं की है,:

+4

हाहा ... चयनित वैल्यूपैथ = "सामग्री" यह था। धन्यवाद! – knockando

+0

उत्कृष्ट जवाब, मुझे भी मदद की। – Califf

0

इस मामले में, आप बस .Text() उपयोग करने के लिए यह निर्धारित करने के लिए सक्षम होना चाहिए हो सकता है क्योंकि मैंने इसे सेट करने के लिए SelectedValue का उपयोग नहीं किया है (और मैं इसका उल्लेख क्यों कर रहा हूं), यह वास्तविक मान निर्धारित करने के लिए थोड़ा अधिक जटिल हो जाता है, क्योंकि आपको XAML:

में SelectionChanged के लिए ईवेंट हैंडलर जोड़ने के बाद ऐसा करना है
private void cmbBudgetYear_SelectionChanged(object sender, EventArgs e) 
{ 
    ComboBox cbx = (ComboBox)sender; 
    string yourValue = String.Empty; 
    if (cbx.SelectedValue == null) 
     yourValue = cbx.SelectionBoxItem.ToString(); 
    else 
     yourValue = cboParser(cbx.SelectedValue.ToString()); 
} 

कहाँ एक पार्सर की जरूरत है क्योंकि .SelectedValue.ToString() आप System.Windows.Controls.Control: 2010 की तरह कुछ दे देंगे, तो आप मूल्य प्राप्त करने के लिए इसे बाहर पार्स करने के लिए है:

private static string cboParser(string controlString) 
{ 
    if (controlString.Contains(':')) 
    { 
     controlString = controlString.Split(':')[1].TrimStart(' '); 
    } 
    return controlString; 
} 

कम से कम, यह क्या मैं में भाग है .... मैं यह जानता हूँ प्रश्न बॉक्स को सेट करने के बारे में था, लेकिन इसे प्राप्त करने के बारे में बात किए बिना केवल सेटिंग को संबोधित नहीं किया जा सकता है, बाद में भी, जैसा कि आप इसे सेट करते हैं, यह निर्धारित करेगा कि यह बदले जाने पर आप इसे कैसे प्राप्त करते हैं।

0

यह मेरे लिए ठीक काम करता है।

ObservableCollection<OrganizationView> Organizations { get; set; } 

Organizations = GetOrganizations(); 

await Dispatcher.BeginInvoke((Action)(() => 
    { 
    var allOrganizationItem = new OrganizationView() { ID = 0, IsEnabled = true, Name = "(All)" }; // It is a class 
    Organizations.Add(allOrganizationItem); 
    cbOrganizations.DisplayMemberPath = "Name"; 
    cbOrganizations.SelectedValuePath = "ID"; 
    cbOrganizations.ItemsSource = null; 
    cbOrganizations.ItemsSource = Organizations; // Set data source which has all items 
    cbOrganizations.SelectedItem = allOrganizationItem; // It will make it as a selected item 
    })); 
संबंधित मुद्दे