如果你希望它是通用的,只需使用{Binding}
例子:
<Window x:Class="WpfApplication4.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="130" Width="167" Name="UI" >
<Grid >
<ComboBox ItemsSource="{Binding ElementName=UI, Path=Items}" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" >
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Background="AliceBlue">
<TextBlock Text="{Binding}" Foreground="Lime"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Window>
代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Items.Add("Stack");
Items.Add("Overflow");
}
private ObservableCollection<string> _items = new ObservableCollection<string>();
public ObservableCollection<string> Items
{
get { return _items; }
set { _items = value; }
}
}
结果:
如果您使用的是自定义对象,您可以覆盖该ToString
方法,以便在组合框中显示您想要的内容
例子
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Items.Add(new CustomObject { Name = "Stack" });
Items.Add(new CustomObject { Name = "Overflow" });
}
private ObservableCollection<CustomObject> _items = new ObservableCollection<CustomObject>();
public ObservableCollection<CustomObject> Items
{
get { return _items; }
set { _items = value; }
}
}
public class CustomObject
{
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
xml:
和上面一样
结果: