湖边的白杨树

探索是一种乐趣

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  218 随笔 :: 1 文章 :: 14 评论 :: 59万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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>
复制代码

效果如下:

A simple ComboBox control

 

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/

posted on   fdyang  阅读(20449)  评论(0编辑  收藏  举报
编辑推荐:
· 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训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示