/ / jak powiązać ComboBox z listą ciągów znaków - c #

jak powiązać ComboBox do listy ciąg - c #

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 № 1

nie 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