44.ComboBox的数据绑定 C#例子 WPF例子

固定最简步骤,包括

XAML:

题头里引入命名空间

标题下面引入类

combobox绑定资源属性和选择属性,block则绑定和combobox一样的选择属性

C#:

通知的类,及对应固定的任务

引入字段

引入属性

其中资源是只读的

选择属性是单触发,必须要加nameof

属性

block=>指向box的属性

这是最简形式

XML 复制代码
<Window x:Class="绑定类型2_combobox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:MainWindow_ViewModel"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <local:MainWindowViewModel/>
    </Window.DataContext>
    <Grid>
        <ComboBox HorizontalAlignment="Left" Margin="378,142,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Item_source}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"/>
        <TextBlock HorizontalAlignment="Left" Margin="378,187,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding SelectedItem}"/>
    </Grid>
</Window>
cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace MainWindow_ViewModel
{
    class MainWindowViewModel:INotifyPropertyChanged
    {

        private string[] item_source = { "6dB/oct", "12dB/oct", "18dB/oct", "24dB/oct", "30dB/oct", "36dB/oct", "42dB/oct", "48dB/oct" };
        private string selectedItem;

        public string[] Item_source
        {
            get { return item_source; }
        }

        public string SelectedItem
        {
            get { return selectedItem; }
            set
            {
                selectedItem = value;
                OnPropertyChanged(nameof(SelectedItem));
            }
        }

        //固定
        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

    }
}

也可以block绑定单独一个属性,像之前那样

cs 复制代码
        public string SelectedItem
        {
            get { return selectedItem; }
            set
            {
                selectedItem = value;
                OnPropertyChanged(nameof(SelectedItem));
                OnPropertyChanged(nameof(SelectedItemDisplay));
            }
        }

        public string SelectedItemDisplay => SelectedItem;
XML 复制代码
        <ComboBox HorizontalAlignment="Left" Margin="378,142,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Item_source}" SelectedItem="{Binding SelectedItem, Mode=TwoWay}"/>
        <TextBlock HorizontalAlignment="Left" Margin="378,187,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding SelectedItemDisplay}"/>
相关推荐
jiejiejiejie_2 小时前
Flutter for OpenHarmony 萌系 UI 实战合集:骨架屏 + 引导页一站式指南
flutter·ui·华为
Ulyanov2 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》 开发环境搭建与工具链极简主义 —— 拒绝臃肿,构建工业级基座
开发语言·python·qt·ui·架构·系统仿真
Ulyanov3 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:QML 声明式语法与霓虹按钮 —— 当 Python 遇见现代美学
开发语言·python·ui·qml·系统仿真·雷达电子对抗仿真
薛定猫AI8 小时前
【深度解析】Open Code Skills 工作流:用知识图谱、Spec 驱动与 UI 设计系统提升 AI Coding Agent 生产力
人工智能·ui·知识图谱
ZC跨境爬虫8 小时前
跟着 MDN 学 HTML day_7:(进阶文本语义标签全覆盖)
前端·javascript·css·ui·html
ZC跨境爬虫8 小时前
跟着 MDN 学 HTML day_6:(HTML文本语义标签全解+lang属性)
前端·ui·html·edge浏览器
Ulyanov9 小时前
《现代 Python 桌面应用架构实战:PySide6 + QML 从入门到工程化》:实时时钟与数据驱动 UI —— 从“事件回调”到“状态绑定”的范式跃迁
开发语言·python·qt·ui·架构·交互
qq_4523962317 小时前
第十五篇:《UI自动化中的稳定性优化:解决flaky tests的七种武器》
运维·ui·自动化
低代码布道师17 小时前
赋予数据形态:从 API 到 UI,构建状态驱动的后台页面
ui·nextjs
zncxCOS1 天前
【ETestDEV5教程48】UI设计器之UI画布
测试开发·ui·仿真测试·etest·嵌入式系统测试