If your list is just strings just Text="{Binding}"
should work
You should think about using an ObservableCollection
for your ItemsSource
as it will automaticly update the ComboBox
when Items change (add/remove etc)
<Window x:Class="WpfApplication13.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Name="UI">
<Grid DataContext="{Binding ElementName=UI}">
<ComboBox ItemsSource="{Binding ComboItems}" Margin="67,48,184,204">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Width="100" Height="50" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Window>
Code:
public partial class MainWindow : Window
{
private ObservableCollection<string> _comboItems = new ObservableCollection<string>();
public MainWindow()
{
InitializeComponent();
ComboItems.Add("Stack");
ComboItems.Add("Overflow");
}
public ObservableCollection<string> ComboItems
{
get { return _comboItems; }
set { _comboItems = value; }
}
}
If you want to use a TextBox
in the ComboBox
you will probably want to use an object as the backing store for the string that implements INotifyPropertyChanged
this way eveyything is updated and kept in sync.
Example:
<Window x:Class="WpfApplication13.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" Name="UI">
<Grid DataContext="{Binding ElementName=UI}">
<ComboBox ItemsSource="{Binding ComboItems}" Margin="67,48,184,204">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}" Width="100" Height="50" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Window>
Code:
public partial class MainWindow : Window
{
private ObservableCollection<MyItem> _comboItems = new ObservableCollection<MyItem>();
public MainWindow()
{
InitializeComponent();
ComboItems.Add(new MyItem { Name = "Stack" });
ComboItems.Add(new MyItem { Name = "Overflow" });
}
public ObservableCollection<MyItem> ComboItems
{
get { return _comboItems; }
set { _comboItems = value; }
}
}
public class MyItem : INotifyPropertyChanged
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; NotifyPropertyChanged("Name"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}