2012-06-21 81 views
5

Tengo un combobox que se vincula a un ObservableCollection de cadenas en un objeto. Este enlace funciona, pero también quiero vincular lo que el usuario seleccione de este cuadro combinado, en una propiedad diferente que sea una cadena, en el mismo objeto. No puedo determinar si debo usar SelectedValue o SelectedItem, o si hay un problema más allá de eso. Gracias de antemano.ComboBox SelectedValue o SelectedItem Binding WPF C#

Esto es lo que tengo hasta ahora, he omitido cualquier código irrelevante para el problema:

En 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> 

Código atrás:

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

Esto puede responder a su pregunta ... http://stackoverflow.com/questions/2883481/combobox-selecteditem-vs-selectedvalue –

Respuesta

8

Probablemente quiera usar SelectedItem. Eso le dará el elemento real que estaba vinculado a él. SelectedValue está determinado por la propiedad SelectedValuePath ... que simplemente no es necesaria en este caso. Además, probablemente no desee configurar el UpdateSourceTrigger como Explicit. El valor predeterminado debería estar bien en ese sentido.