面向对象的C#

时间:2015-01-07 22:02:43

标签: c# wpf xaml

我有一个关于C#中面向对象的一般问题。

假设我有多个XAML页面都有这个方法:

private void SubmitButton_Click(object sender, RoutedEventArgs e)
{
   // Do Something
}

现在我有一个类来保存一个方法,该类被称为Methods.cs并保存它:

public void StopUpperAndSpace(TextBox txtBox) 
{
   txtBox.Text = txtBox.Text.Trim();
   // Set it to lowercase
   txtBox.Text = txtBox.Text.ToLower();
}

当用户单击任何页面上的SubmitButton时,我希望它执行存储在Methods.cs中的此方法。如果我在一个名为NameTextBox的XAML页面上有一个文本框,当用户单击SubmitButton时,我将如何执行该方法,以便SubmitButton_Click方法中的NameTextBox等于StopUpperAndSpace方法中的txtBox?

我理解这个问题很难理解,但我觉得很难解释。如果您需要澄清,请发表评论!感谢:)

1 个答案:

答案 0 :(得分:4)

我误解了你,为什么你不能把它传递给你的方法?我也会让你的方法变成静态的,但如果你想在技术上创建一个Methods类的实例。

<强> SomePage.xaml

<TextBox x:Name="SomeTextBox" />
<TextBox x:Name="SomeOtherTextBox />

<强> SomePage.xaml.cs

private void SubmitButton_Click(object sender, RoutedEventArgs e)
{
    // Your initial method call could potentially look like this.
    Methods.StopUpperAndSpace(this.SomeTextBox);

    // Alternatively you could do something like this.
    this.SomeOtherTextBox.Text = Methods.ToLowerAndTrim(this.SomeOtherTextBox.Text);
}

<强> Methods.cs

public static void StopUpperAndSpace(TextBox txtBox) 
{
    txtBox.Text = txtBox.Text.Trim();
    // Set it to lowercase
    txtBox.Text = txtBox.Text.ToLower();
}

public static string ToLowerAndTrim(string text)
{
    return text.Trim().ToLower();
}