首页 > 解决方案 > 同时写入两个文本框

问题描述

在我的 WPF 应用程序中,我有两个文本框,我正在寻找以下内容:

我希望,如果用户textbox1 在应用程序上写一些东西,会将相同的值放入textbox2,

<TextBox x:Name="textbox1"/>
<TextBox x:Name="textbox2"/>

有没有一种优雅的方式来做到这一点?

标签: c#wpfxaml

解决方案


以下将起作用:

<TextBox x:Name="textbox1" />
<TextBox x:Name="textbox2" Text="{Binding ElementName=textbox1, Path=Text}"/>

现在它所做的就是将 的属性Text绑定的属性。您所做的每一项更改都会自动反映在.textbox2Texttextbox1textbox1textbox2


编辑:实际要求

根据您的评论,这可能是您想要做的解决方案:

<TextBox x:Name="textbox1" Text="{Binding TheText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<TextBox x:Name="textbox2" Text="{Binding TheText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

并添加这个 C# 类:

public class MySimpleViewModel : INotifyPropertyChanged
{
    private string theString = String.Empty;

    public string TheString
    {
        get => this.theString;
        set
        {
            if(this.theString != value)
            {
                this.RaisePropertyChanged();
                this.theString = value;
            }
        }
    }
        
    public event PropertyChangedEventHandler PropertyChanged;

    public virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
    {
        this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

我没有展示的是如何将其MySimpleViewModel与实际视图连接起来。但是,如果您对此有疑问,我当然也可以证明这一点。

希望能帮助到你。


推荐阅读