【问题标题】:watching multiple string-property changes from another class?观看另一个类的多个字符串属性更改?
【发布时间】:2014-01-23 11:50:02
【问题描述】:

我有几个包含多个字符串的类,我想根据字符串的变化引发不同的事件。这是一个例子

class textClass: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private string text1;
    public string Text1
    {
        get { return text1; }
        set
        {
            text1 = value;
            NotifyPropertyChanged("Text1");
        }
    }

    private string text2;
    public string Text2
    {
        get { return text2; }
        set
        {
            text2 = value;
            NotifyPropertyChanged("Text2");
        }
    }

    //used as notifier when a string changes within this class
    private void NotifyPropertyChanged(string info)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (PropertyChanged != null)
            handler(this, new PropertyChangedEventArgs(info));
    }
}

所以在我的主课中,如果我使用

txtClass.PropertyChanged += new PropertyChangedEventHandler(txtClass_PropertyChanged);

我如何不使用“if”语句来评估字符串:

static void txtClass_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        if (e.PropertyName == "Text1")
            Console.Write("yadda yadda1");
        if (e.PropertyName == "Text2")
            Console.Write("yadda yadda2");
    }

如果我有 70 或 80 个字符串,该方法将永远不会停止。

还有其他方法吗?

【问题讨论】:

    标签: c# properties inotifypropertychanged


    【解决方案1】:

    使用不同预期字符串的字典并进行查找,然后输出结果值

    var dict = new StringDictionary();
    dict.Add("Text1", "yadayad");
    // add the rest
    
    
    var val = dict[property_name];
    if (val != null)
    {
       Console.WriteLine(val);
    }
    

    【讨论】:

    • 然后我需要在完成后将其删除,否则它会占用大量内存。好的答案虽然。编辑:再想一想,它将取代价值。谢谢
    • 将 dict 设为类字段,然后重用它。
    猜你喜欢
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多