从类访问mainwindow控件

时间:2013-01-24 11:29:49

标签: c# .net wpf

我知道这很简单。

Mainwindow有一个文本框。在文本框内容上更改事件,即textboxtext_changed,之后我希望文本框再次变为空。

我在其他类中有一个函数,它在textboxtext_changed中执行。我想在其他类中清除函数中的文本框,但我无法访问主窗口控件,我不想在那里创建mainwindow的实例。

有没有简单的方法呢?

3 个答案:

答案 0 :(得分:2)

public void function(ref TextBox textBox)
{
  textbox.Text = string.empty;
}

答案 1 :(得分:1)

从TextChanged函数中,您可以从发件人

访问TextBox
private void textBox1_TextChanged(object sender, EventArgs e)
{
    ((TextBox)sender).Text = "";
}

答案 2 :(得分:0)

使用MVVM可以非常轻松:

  1. 在ViewModel中声明字符串属性。
  2. TextBox.Text属性绑定到此字符串属性,并将UpdateSourceTrigger设置为PropertyChanged,将Mode设置为TwoWay。
  3. 只要ViewModel上的属性发生更改,请执行您的逻辑。
  4. <强>视图模型

        public class MyViewModel : INotifyPropertyChanged
        {
            private string someText;
    
            public string SomeText
            {
                get
                {
                    return this.someText;
                }
                set
                {
                    this.someText = value;
    
                    if (SomeCondition(this.someText))
                    {
                        this.someText = string.Empty;
                    }
    
                    var epc = this.PropertyChanged;
                    if (epc != null)
                    {
                        epc(this, new PropertyChangedEventArgs("SomeText"));
                    }
                }
            }
        }
    

    <强> XAML

        <TextBox Text="{Binding SomeText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>