1. 在UI(Xaml) 里面直接绑定数据.
<Window x:Class="WpfTutorialSamples.ComboBox_control.ComboBoxSample" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ComboBoxSample" Height="150" Width="200"> <StackPanel Margin="10"> <ComboBox> <ComboBoxItem>ComboBox Item #1</ComboBoxItem> <ComboBoxItem IsSelected="True">ComboBox Item #2</ComboBoxItem> <ComboBoxItem>ComboBox Item #3</ComboBoxItem> </ComboBox> </StackPanel> </Window>
效果如下:
2. 动态绑定数据.
2.1 绑定XML到ComboBox
前台Xaml里面需要在Resource里面指定XmlDataProvider. 并设定绑定. 后台无需任何代码。
<Window x:Class="WpfApplication1.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"> <Window.Resources> <XmlDataProvider x:Key="DataProvider" Source="pack://siteoforigin:,,,/TestData.xml" XPath="Countries"/> </Window.Resources> <StackPanel> <ComboBox x:Name="com_Country" ItemsSource="{Binding Source={StaticResource DataProvider}, XPath=Country}" DisplayMemberPath="@Name" Margin="5"/> <ComboBox x:Name="com_City" DataContext="{Binding ElementName=com_Country, Path=SelectedItem}" ItemsSource="{Binding XPath=City}" DisplayMemberPath="@Name" Margin="5"/> <TextBlock Margin="5"> <TextBlock.Inlines> <Run Text="Selected Country: "/> <Run Text="{Binding ElementName=com_Country, Path=SelectedItem.Attributes[Name].Value, Mode=OneWay}"/> <LineBreak/> <Run Text="Selected City: "/> <Run Text="{Binding ElementName=com_City, Path=SelectedItem.Attributes[Name].Value}"/> </TextBlock.Inlines> </TextBlock> </StackPanel> </Window>
3. 绑定Dictionary到ComboBox.
private void BindingToProjects() { this.projects.Add("AAA", new List<string>() { "VID_045", "VID_046" this.projects.Add("BBB", new List<string>() { "VID_111", "VID_222", }); this.cbProjectName.ItemsSource = this.projects; this.cbProjectName.DisplayMemberPath = "Key"; this.cbProjectName.SelectedValuePath = "Key"; } private void cbProjectName_SelectionChanged(object sender, SelectionChangedEventArgs e) { this.lbVidPid.Items.Clear(); List<string> registryList = this.projects.Where(dic => dic.Key == this.cbProjectName.SelectedValue.ToString()).Select(dic => dic.Value).First(); foreach (var registryKey in registryList) { this.usbRegistryList.Add(registryKey); this.lbVidPid.Items.Add(registryKey); } }
参考: http://www.wpf-tutorial.com/list-controls/combobox-control/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人