2012-06-21 16 views
5

Mam combobox, która jest wiążąca dla ObservableCollection ciągów w obiekcie. To powiązanie działa, ale chcę również powiązać wszystko, co użytkownik wybierze z tego combobox, w innej właściwości, która jest ciągiem znaków, w tym samym Object. Nie mogę się dowiedzieć, czy powinienem używać SelectedValue lub SelectedItem, czy też istnieje problem wykraczający poza to. Z góry dziękuję.ComboBox Wybrano wartość lub wybraną opcję Wiązanie WPF C#

Oto co mam tak daleko, że pominięto żadnego kodu nieistotnych problemu:

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

Kod tyle:

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

Może to odpowiedzieć na Twoje pytanie ... http://stackoverflow.com/questions/2883481/combobox-selecteditem-vs-selectedvalue –

Odpowiedz

8

Prawdopodobnie chcesz użyć SelectedItem. To da rzeczywisty przedmiot, który był z nim związany. SelectedValue jest określona przez właściwość SelectedValuePath ... co w tym przypadku jest niepotrzebne. Prawdopodobnie nie chcesz ustawić wartości UpdateSourceTrigger na Explicit. Domyślnie powinno to być w porządku pod tym względem.