jak powiązać ComboBox z listą łańcuchów oto moja lista:
public ObservableCollection<string> m_Category =
new ObservableCollection<string>();
<ComboBox x:Name="MyComboBox" Height="Auto" Width="Auto"
ItemsSource="{Binding m_Category, NotifyOnTargetUpdated=True,Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" SelectedIndex ="0"
SelectionChanged ="MyComboBox_SelectionChanged"/>
Plz zauważa, że mój comboBox znajduje się w DataTemplate Thks
Odpowiedzi:
1 dla odpowiedzi № 1nie powinieneś używać bindowania w swoim ItemSource, ponieważ nie masz tutaj ustawionego datacontekstu po prostu w kodzie do tego (po wypełnieniu m_Category)
MyComboBox.ItemsSource = m_Category ;
W przeciwnym razie powinieneś utworzyć klasę zawierającą taką właściwość, a twój bind będzie działał
public class MyDataContext
{
ObservableCollection<string> m_Category =
new ObservableCollection<string>();
public ObservableCollection<string> M_Category
{ get;set}
}
// Zmień powiązanie w ten sposób
<ComboBox x:Name="MyComboBox" Height="Auto" Width="Auto"
ItemsSource="{Binding M_Category, NotifyOnTargetUpdated=True,Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" SelectedIndex ="0"
SelectionChanged ="MyComboBox_SelectionChanged"/>
w głównym oknie możesz zrobić coś takiego
public MainWindow()
{
InitializeComponent();
MyDataContext myDataContext = new MyDataContext();
//for example here
For(i=0;i<100;i++)
myDataContext.M_category.Add(yourItem)
this.DataContext = myDataContext ;
}
0 dla odpowiedzi nr 2
Przede wszystkim sprawdź, czy ustawisz DataContext na ComboBox, inaczej bindowanie nie zadziała.
Twój plik XAML powinien wyglądać mniej więcej tak:
<ComboBox Name="cbPropName" ItemsSource="{Binding Path=m_Category}" />
powinno działać, jeśli nadal masz problem, spójrz w to stanowisko