Witam,
W swojej aplikacji mam wrzucony DataGrid, w którym jest kilka kolumn tekstowych i jedna kolumna DataGridComboBoxColumn. Jako wiersze wczytywane są całe obiekty danych. Pole ComboBox wypełnia się listą danych tekstowych. W jaki sposób moge odczytać dane jakie wybrałem w ComboBoxie? Poprosiłbym o jakiś przykład wykorzystania np. SelectedItems lub SelectedValue. Przeglądałem już dziesiątki stron z przykładami, ale coś nie chce zadziałać. Być może robię coś źle. ;/
Proszę o pomoc.
Z góry dziękuję za zainteresowanie tematem.
Pozdrawiam,
Michał
Zbinduj SelectedValue z VM z mode=TwoWay.
Np tak
SelectedValue="{Binding Path=couponType,Mode=TwoWay}"
/e Chociaz po chwili zastanowienia nie jestem pewien jak to ma się do CB w datagridzie.
Tak też już próbowałem i nadal nic.. ;/
Po stronie C#:
StaticBarsList.Items.Add(new BarItem()
{
Colors = Enum.GetValues(typeof(SurchargeType)),
DimmensionOut = SelectedBar.DimmensionOut,
ID = SelectedBar.ID,
Surcharge = 0,
TranslationPL = SelectedBar.TranslationPL,
selectedItem = "",
});
i w jaki sposób na podstawie tego odczytać wybraną wartość w ComboBoxie przy zdarzeniu SelectionChanged?
A po co przy SelectionChanged? Przecież to jest MVVM, a w nim wiesz kiedy zmieniło się selectedItem bo binduje Cię do widoku.
jeśli chcesz mieć w SelectionChanged to do SelectedItem dostajesz się w sposób: (sender as ComboBox).SelectedItem
Ok, pomogło. Pobrałem wartość z ComboBoxa. Wielkie dzięki. Na podstawie tej wartości ma wyliczyć kolejne pole w tabeli mianowicie dopłatę. No i pobieram:
BarItem bar = new BarItem;
bar = (StaticBarsList.SelectedItem[0] as BarItem);
bar.Surcharge = 90; //przykładowa wartość
Ale nie odświeża mi widoku. Muszę odświeżyć "ręcznie" StaticBarsList.Items.Refresh(). Wtedy jednak wyrzuca wybraną wartość z ComboBox'a ;/.
Nie odświeża bo widocznie Surcharge nie jest poprawnie bindowaną właściwością (property) lub nie jest wołany event propertychanged z interfejsu INotifyPropertyChanged