我正在制作一个包含三个按钮的自定义控件。每个按钮代表一个选项卡。当我单击一个按钮以更改与该选项卡对应的选项卡时,控件的变量被更新,该变量称为“selectedIndex”。如何制作在更改此索引时触发的自定义事件?
我在这里看到了自定义事件的解决方案,但它们都是已经存在的事件的副本,例如 Click-events。我的问题涉及变量更改事件”。
问候!
我正在制作一个包含三个按钮的自定义控件。每个按钮代表一个选项卡。当我单击一个按钮以更改与该选项卡对应的选项卡时,控件的变量被更新,该变量称为“selectedIndex”。如何制作在更改此索引时触发的自定义事件?
我在这里看到了自定义事件的解决方案,但它们都是已经存在的事件的副本,例如 Click-events。我的问题涉及变量更改事件”。
问候!
一种选择是让您的对象实现非常标准的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 元素。实际上,所有接口强制执行的是事件的标准名称。如果您愿意,您可以放弃界面并创建一个自定义公共事件。并且只要您的对象在逻辑上需要调用该事件。暴露事件和调用它的结构是相同的。