亲爱的老吉先森 2023-08-28 11:35 采纳率: 42.9%
浏览 6
已结题

WPF Binding

WPF中,如果选中了一个复选框,如何实时的将选中的内容显示在textbox里,当取消选中后,又从复选框中消失,通过Binding实现:

img


请问大家怎么实现这个东西:

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-08-28 12:37
    关注

    引用 皆我百晓生 小程序回复内容作答:

    在WPF中,你可以使用数据绑定和Converter来实现将复选框选中的内容实时显示在textbox中。首先,创建一个ViewModel类来存储复选框选中的内容,并实现INotifyPropertyChanged接口以便通知UI更新。

    public class ViewModel : INotifyPropertyChanged
    {
        private string _selectedText;
    
        public string SelectedText
        {
            get { return _selectedText; }
            set
            {
                if (_selectedText != value)
                {
                    _selectedText = value;
                    OnPropertyChanged(nameof(SelectedText));
                }
            }
        }
    
        public event PropertyChangedEventHandler PropertyChanged;
    
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    

    接下来,在XAML文件中,将该ViewModel类实例化,并将复选框和textbox的IsChecked和Text属性绑定到ViewModel中的SelectedText属性上,同时使用一个Converter来将bool值转换为文本内容。

    <Window x:Class="WpfApplication.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:local="clr-namespace:WpfApplication"
            Title="MainWindow" Height="350" Width="525">
        <Window.Resources>
            <local:BooleanToStringConverter x:Key="booleanToStringConverter"/>
        </Window.Resources>
        <Window.DataContext>
            <local:ViewModel/>
        </Window.DataContext>
        <Grid>
            <CheckBox Content="选中我" IsChecked="{Binding SelectedText, Converter={StaticResource booleanToStringConverter}, Mode=TwoWay}"/>
            <TextBox Text="{Binding SelectedText}"/>
        </Grid>
    </Window>
    

    最后,创建一个Converter类来将bool值转换为文本内容。

    public class BooleanToStringConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            bool isChecked = (bool)value;
            return isChecked ? "选中了复选框" : string.Empty;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    

    现在,当复选框选中时,textbox中将实时显示"选中了复选框"文本;当复选框取消选中时,textbox将清空。通过数据绑定和Converter,实现了复选框选中内容的实时显示和取消显示。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 已采纳回答 8月28日
  • 创建了问题 8月28日

悬赏问题

  • ¥20 数学建模数学建模需要
  • ¥15 关于#lua#的问题,请各位专家解答!
  • ¥15 什么设备可以研究OFDM的60GHz毫米波信道模型
  • ¥15 不知道是该怎么引用多个函数片段
  • ¥30 关于用python写支付宝扫码付异步通知收不到的问题
  • ¥50 vue组件中无法正确接收并处理axios请求
  • ¥15 隐藏系统界面pdf的打印、下载按钮
  • ¥15 基于pso参数优化的LightGBM分类模型
  • ¥15 安装Paddleocr时报错无法解决
  • ¥15 python中transformers可以正常下载,但是没有办法使用pipeline