0

我正在制作一个包含三个按钮的自定义控件。每个按钮代表一个选项卡。当我单击一个按钮以更改与该选项卡对应的选项卡时,控件的变量被更新,该变量称为“selectedIndex”。如何制作在更改此索引时触发的自定义事件?

我在这里看到了自定义事件的解决方案,但它们都是已经存在的事件的副本,例如 Click-events。我的问题涉及变量更改事件”。

问候!

4

1 回答 1

1

一种选择是让您的对象实现非常标准的INotifyPropertyChanged接口。没有规则规定对象上的每个属性都需要引发PropertyChanged事件,因此只需为有问题的一个属性引发它。像这样的东西:

public class MyObject : INotifyPropertyChanged
{
    private string _myProperty;
    public string MyProperty
    {
        get { return _myProperty; }
        set
        {
            _myProperty = value;
            NotifyPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }
}

如果您的 .NET 版本不支持CallerMemberName,那么您可以删除它并手动提供属性名称:

NotifyPropertyChanged("MyProperty");

此时,任何调用代码都可以订阅PropertyChanged此对象的任何实例上的公共事件。这个接口特别方便,因为它在许多 UI 技术中常用来更新数据绑定的 UI 元素。实际上,所有接口强制执行的是事件的标准名称。如果您愿意,您可以放弃界面并创建一个自定义公共事件。并且只要您的对象在逻辑上需要调用该事件。暴露事件和调用它的结构是相同的。

于 2014-06-10T12:07:14.510 回答