WPF DataGrid + ComboBox

0

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ł

0

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.

0

Tak też już próbowałem i nadal nic.. ;/

0
<groupbox header="Słupki stałe"> <datagrid x:name="StaticBarsList"> <datagrid.columns> <datagridtextcolumn header="ID" width="0" binding="{Binding ID}" visibility="Hidden" /> <datagridtextcolumn header="Profil" width="Auto" binding="{Binding TranslationPL}" /> <datagridtextcolumn header="Wymiar zewnętrzny" width="Auto" binding="{Binding DimmensionOut}" /> <datagridtemplatecolumn header="Typ koloru"> <datagridtemplatecolumn.celltemplate> <datatemplate> <combobox itemssource="{Binding Path=Colors}" selecteditem="{Binding Path=selectedItem}" selectionchanged="ComboBox_SelectionChanged" /> </datatemplate> </datagridtemplatecolumn.celltemplate> </datagridtemplatecolumn> <datagridtextcolumn header="Dopłata" width="Auto" binding="{Binding Surcharge}" /> </datagrid.columns> </datagrid> </groupbox>

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?

0

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

0

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 ;/.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1