WPF Binding

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

img


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

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

在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,实现了复选框选中内容的实时显示和取消显示。

【相关推荐】



  • 这篇博客: WPF 入门教程 TextBox详解中的 修改选择 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    所有这些属性都是可读的和可写的,这意味着您也可以修改它们。例如,您可以设置SelectionStart和SelectionLength属性以选择自定义文本范围,或者可以使用SelectedText属性插入和选择字符串。请记住,文本框必须具有焦点,例如首先调用Focus()方法,以便工作。

    推荐一款WPF MVVM框架开源项目:Newbeecoder.UI

    resize,l_300

    Newbeecoder.UI开源项目

    Demo下载:

    Newbeecoder.UI开源项目icon-default.png?t=M3K6https://share.weiyun.com/py6W1dcK

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^