2012-06-21 48 views
5

Bir nesnede ObservableCollection dizelerine bağlanan bir combobox'ım var. Bu ciltleme çalışır, ancak aynı nesne içinde bir dize olan farklı bir özellikte, kullanıcının bu combobox'tan seçtiği herhangi bir şeyi bağlamak istiyorum. SelectedValue veya SelectedItem kullanmam gerekip gerekmediğini veya bunun ötesinde bir sorun olup olmadığını anlayamıyorum. Şimdiden teşekkür ederim. XAML içindeComboBox SelectedValue veya SelectedItem Binding WPF C#

:

<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 arkasında:

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

Bu, sorunuza cevap verebilir ... http://stackoverflow.com/questions/2883481/combobox-selecteditem-vs-selectedvalue –

cevap

8

İşte

şimdiye kadar, ben sorunun alakasız herhangi bir kod atladık ne olduğunu Muhtemelen SelectedItem'u kullanmak istersiniz. Bu, kendisine bağlı olan gerçek öğeyi verecektir. SelectedValue, bu durumda sadece gereksiz olan SelectedValuePath özelliği tarafından belirlenir. Ayrıca, büyük olasılıkla UpdateSourceTrigger'u Explicit olarak ayarlamak istemezsiniz. Varsayılan olarak bu konuda iyi olmalıdır.