【问题标题】:Using TextChangedEventArgs in Custom Control在自定义控件中使用 TextChangedEventArgs
【发布时间】:2019-10-19 00:06:48
【问题描述】:

我正在为我的应用程序创建一个自定义控件。这个控件有一个文本属性,我想更改通知。

因为它是一个文本属性,我想我会使用现有框架的Windows.UI.XAML.Controls.TextChangedEventArgs 类。但是我不知道如何新建一个实例,也找不到任何有用的文档。

有人重用过这个类吗?

编辑:明确地说,这是一个自定义控件...不是一个用户控件。我不需要或不想要控件中的 TextBox。有一个 Text DependencyProperty,它会发生变化。我是PUBLISHING,而不是订阅。我正在寻找使用内置的 TextChangedEventArgs 类。这就是我的问题的范围。

【问题讨论】:

  • 为什么要new 和TextChangedEventArgs?订阅TextChanged 事件还不够吗?
  • 我想你可能不理解我...我正在发布活动。为了发布,我需要创建 EventArgs。事件是 TextChanged,我想使用 TextChangedEventArgs 类。

标签: c# uwp


【解决方案1】:

您无法创建新的TextChangedEventArgs,这是TextChanged事件的特殊事件参数,但您可以通过注册新事件来导出TextChangedEventArgs。

假设您的自定义控件中有一个 TextBox,您可以为您的自定义控件注册一个 TextChanged 事件。

UserControl1.xaml.cs

public event EventHandler<TextChangedEventArgs> TextChanged;

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    TextChanged?.Invoke(this, e);
}

当然,你也可以创建自己的EventArgs来传递你需要的参数。

public class MyTextChangedEventArgs : EventArgs
{
    public string Text { get; set; }
    public MyTextChangedEventArgs(string text)
    {
        Text = text;
    }
}

UserControl1.xaml.cs

public event EventHandler<MyTextChangedEventArgs> TextChanged;

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    string text = (sender as TextBox).Text;
    TextChanged?.Invoke(this, new MyTextChangedEventArgs(text));
}

最好的问候。

【讨论】:

  • 这是一个自定义(模板化)控件,不是一个用户控件。我没有封装内置控件;这是一个从头开始的控件,它有一个 text 属性。
  • 您好,UserControl 和 CustomControl 都不能直接创建TextChangedEventArgs,但是您可以创建自己的EventArgs 来模拟TextChangedEventArgs,我在答案中也解释了。跨度>
猜你喜欢
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多