WPF中,如果选中了一个复选框,如何实时的将选中的内容显示在textbox里,当取消选中后,又从复选框中消失,通过Binding实现:
请问大家怎么实现这个东西:
WPF中,如果选中了一个复选框,如何实时的将选中的内容显示在textbox里,当取消选中后,又从复选框中消失,通过Binding实现:
引用 皆我百晓生 小程序回复内容作答:
在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,实现了复选框选中内容的实时显示和取消显示。