在MVVM(Model-View-ViewModel)架构中,实现两个文本框之间值的相互依赖更改通常涉及到使用数据绑定和命令。以下是一个基于WPF(Windows Presentation Foundation)的示例,展示了如何实现这一功能。
假设我们有两个文本框,当一个文本框的值改变时,另一个文本框的值也相应改变。
using System.ComponentModel;
public class MainViewModel : INotifyPropertyChanged
{
private string _text1;
private string _text2;
public string Text1
{
get => _text1;
set
{
if (_text1 != value)
{
_text1 = value;
OnPropertyChanged(nameof(Text1));
Text2 = value; // 当Text1改变时,更新Text2
}
}
}
public string Text2
{
get => _text2;
set
{
if (_text2 != value)
{
_text2 = value;
OnPropertyChanged(nameof(Text2));
Text1 = value; // 当Text2改变时,更新Text1
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
<Window x:Class="YourNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Text="{Binding Text1, UpdateSourceTrigger=PropertyChanged}" Margin="10"/>
<TextBox Text="{Binding Text2, UpdateSourceTrigger=PropertyChanged}" Margin="10,50,10,10"/>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainViewModel();
}
}
INotifyPropertyChanged
接口,以便在属性值改变时通知UI。TextBox
的Text
属性通过{Binding}
语法绑定到ViewModel中的相应属性,并设置UpdateSourceTrigger=PropertyChanged
以确保每次输入变化时都更新源。PropertyChanged
事件,从而自动更新另一个文本框的值。通过这种方式,可以实现两个文本框之间的值相互依赖更改,同时保持代码的清晰和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云