亲爱的老吉先森 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日