2012-06-21 14 views
5

Ho una casella combinata che si lega a un ObservableCollection di stringhe in un oggetto. Questa associazione funziona, ma voglio anche legare tutto ciò che l'utente seleziona da questa combobox, in una proprietà diversa che è una stringa, nello stesso oggetto. Non riesco a capire se dovrei usare SelectedValue o SelectedItem o se c'è un problema oltre. Grazie in anticipo.ComboBox SelectedValue o SelectedItem Binding WPF C#

Ecco quello che ho finora, ho omesso alcun codice irrilevante per il problema:

In XAML:

<Grid.Resources> 
    <my:JobItem x:Key="jobItemViewSource" /> 
</Grid.Resources> 

<ComboBox x:Name="businessUnitBox" ItemsSource="{Binding Path=BusinessUnits}" IsSynchronizedWithCurrentItem="True"> 
    <ComboBox.SelectedValue> 
     <Binding Path="BusinessUnit" Mode="TwoWay" UpdateSourceTrigger="Explicit" /> 
    </ComboBox.SelectedValue> 
</ComboBox> 

codice dietro:

public string BusinessUnit 
{ 
    get{ return businessUnit; } 
    set 
    { 
     if (String.IsNullOrEmpty(BusinessUnit) || !BusinessUnit.Equals(value)) 
     { 
      businessUnit = value; 
      OnPropertyChanged("BusinessUnit"); 
     } 
    } 

} 

public ObservableCollection<string> BusinessUnits 
{ 
    get { return businessUnits; } 
    set 
    { 
     if(!BusinessUnits.Equals(value)) 
     { 
      businessUnits = value; 
      OnPropertyChanged("BusinessUnits"); 
     } 

     businessUnits = value; 
    } 
} 
+0

Questo potrebbe rispondere alla tua domanda ... http://stackoverflow.com/questions/2883481/combobox-selecteditem-vs-selectedvalue –

risposta

8

Probabilmente vuoi usare SelectedItem. Questo darà l'oggetto reale che era legato ad esso. SelectedValue è determinato dalla proprietà SelectedValuePath ... che in questo caso non è più necessaria. Inoltre, probabilmente non si desidera impostare UpdateSourceTrigger su Explicit. L'impostazione predefinita dovrebbe andare bene al riguardo.

Problemi correlati