Dodaję do ComboBox w #xaml pozycję przez Var a potem podczas ładowania danych przez comboBox.Items.Add. Następnie w zdarzeniu SelectionChanged: string filterText = ((sender as ComboBox).SelectedItem as string);
i właśnie SelectedItem dla dodanego "Var" ma wartość obiektu ComboBoxItem a dla wartości dodanych przez comboBox.Items.Add to zwykły string.
@ziolo86: jeśli chcesz żeby dynamicznie dodane elementy były ComboBoxItem to zamiast dodawać stringi do Items dodawaj w ten sposób: cb.Items.Add(new ComboBoxItem { Content = item}; Wydaje mi się że o to Ci chodzi :s i na przyszłość, jak wklejasz kod to na jakimś pastebinie czy wykop-code.
@ziolo86: A, czyli chcesz mieć stringi przy obsłudze SelectedItem. W tym wypadku, szczerze mówiąc to nie wiem jak zrobić żeby hardcodowane elementy nie były ComboBoxItem. Wiem że jak zrobisz tak jak napisałem wyżej + w SelectionChanged weźmiesz var cbi = combobox.SelectedItem as ComboBoxItem; var stringValue = cbi.Content as string; To otrzymasz stringi dla każdego przypadku.
Jeszcze jedna uwaga - operator są może zwrócić null, więc ten kod nie jest w pełni
@ziolo86: :(. Poczytaj o MVVM, nie powinieneś praktycznie nigdy w ten sposób ładować danych do combobox. WPF ma bardzo dobre wsparcie dla bindingów, naucz się z nich korzystać, a zapomnisz raz na zawsze o ręcznym dodawaniu czegokolwiek do comboboxa. Co do zasady* - kod, w którym odwołujesz się do kontrolki w WPF jest złym kodem.
Dodaję do ComboBox w #xaml pozycję przez Var a potem podczas ładowania danych przez comboBox.Items.Add.
Następnie w zdarzeniu SelectionChanged:
string filterText = ((sender as ComboBox).SelectedItem as string);
i właśnie SelectedItem dla dodanego "Var" ma wartość obiektu ComboBoxItem a dla wartości dodanych przez comboBox.Items.Add to zwykły string.
Tak na marginesie, jak wpf to polecam jednak Binding, wygodniejsze, współgra z MVVM.
foreach (var item in lista)
{
cbDstPort.Dispatcher.Invoke(new Action(() => { AddItemToCombobox(cbDstPort,item.DstPort); }));
}
private void AddItemToCombobox(ComboBox cb,string item)
{
if (!cb.Items.Contains(item))
{
cb.Items.Add(item);
}
}
cb.Items.Add(new ComboBoxItem { Content = item};
Wydaje mi się że o to Ci chodzi :s i na przyszłość, jak wklejasz kod to na jakimś pastebinie czy wykop-code.
ale ja nie mam problemu z dodanymi elementami ale z elementem dodanym w xaml
W tym wypadku, szczerze mówiąc to nie wiem jak zrobić żeby hardcodowane elementy nie były ComboBoxItem.
Wiem że jak zrobisz tak jak napisałem wyżej + w SelectionChanged weźmiesz
var cbi = combobox.SelectedItem as ComboBoxItem;
var stringValue = cbi.Content as string;
To otrzymasz stringi dla każdego przypadku.
Jeszcze jedna uwaga - operator są może zwrócić null, więc ten kod nie jest w pełni
Co do zasady* - kod, w którym odwołujesz się do kontrolki w WPF jest złym kodem.