【发布时间】:2017-11-16 01:53:30
【问题描述】:
假设我的 WPF 应用程序中有两个类:
public class Radio
{
public int Volume { get; set; }
}
public class Vehicle
{
public Radio MusicRadio { get; set; }
private void Explode()
{
if (MusicRadio.Volume == 10)
{
Application.Shutdown();
}
}
}
...其中Vehicle 有一个属性,它是Radio 类的一个实例。在我后面的代码中,我想在单击按钮时设置该收音机类的音量:
private void startButton_Click(object sender, TextChangedEventArgs e)
{
Vehicle Xterra = new Vehicle() { MusicRadio = new Radio() };
for (int i = 0; i < 666; i++)
{
Xterra.MusicRadio.Volume = i;
}
}
在上述代码中,一旦 for 循环达到 10 次迭代,应用程序应通过 Explode() 方法关闭。
我希望我的Vehicle 类在每次MusicRadio 属性更改时执行其私有函数Explode()。如何确保它收到此更改的警报?
【问题讨论】:
-
使用 Java 还是 C#?代码看起来像 C#...什么是 GUI?窗体? HTML/ASP/MVC?
-
@AustinFrench 抱歉,我已更新以修复语法并更加清晰。它是 C# 和 WPF。
-
请修正您的帖子,使叙述与代码匹配。你写像 "
Radio是类Vehicle" 和 "Xterra类的成员来执行它的私有函数Explode()",但是在您发布的代码,Radio是一个独立类,不是Vehicle的成员,Explode()方法是Vehicle的成员,而不是Xterra的成员。Xterra甚至不是上面代码中的一个类。 -
也就是说,如果您使用的是 WPF,您当然应该熟悉
INotifyPropertyChanged,这似乎适用于这里。或者只是为MusicRadio属性编写一个显式设置器,在其中调用Explode()。请改进问题,以便提供一个好的答案。 -
你对收音机和车辆类都有完全的控制权吗?