Добавление события
Как уже упоминалось в комментариях транжира, вы должны добавить текстовую событие изменения в интерфейсе:
public interface IMyInterface
{
// This event is raised whenever the value of Text is modified:
event Action<IMyInterface, string> TextChanged;
string Text { get; set; }
}
Классы, реализующие интерфейс должен поднять это событие при изменении их свойств Text
:
public class Class1 : IMyInterface
{
public event Action<IMyInterface, string> TextChanged;
protected void RaiseTextChanged(string newValue)
{
var handler = TextChanged;
if (handler != null)
handler(this, newValue);
}
private string _text;
public string Text
{
get { return _text; }
set { _text = value; RaiseTextChanged(value); }
}
}
Реагируя на события
Любой код, который заинтересован в изменениях в Text
собственности на IMyInterface
объект может затем зарегистрировать обработчик события:
IMyInterface thing = new Class1();
thing.TextChanged += Thing_TextChanged;
...
void Thing_TextChanged(IMyInterface sender, string newValue)
{
// Do something with the new value
}
Ваш конкретный потребительной случай
В вашем конкретном случае вы должны добавить следующий код к MainPage.xaml.cs
:
// In MainPage's constructor, after the call to InitializeComponent:
popupControl2.TextChanged += PopupControl_TextChanged;
// A separate method in the MainPage class:
private void PopupControl_TextChanged(IMyInterface sender, string newValue)
{
// Do what needs to be done with the next Text value here
}
Обратите внимание, что для управления этим интерфейсом не требуется как управление Silverlight, так и класс главной страницы. Из того, что я понимаю о вашей ситуации, пока нет необходимости в интерфейсе, но я полагаю, это зависит от других требований, о которых вы нам не говорили.
Использование интерфейса с одним свойством, это будет сложно. Я предполагаю, что вы можете обновить интерфейс ... Вероятно, лучшим подходом было бы объявить событие как часть интерфейса. [Как реализовать события интерфейса] (https://msdn.microsoft.com/en-us/library/ak9w5846.aspx) – spender
Итак, вы хотите, чтобы все и все экземпляры 'Class2'« знали », когда какой-либо« Class1 »меняет его «Текст» и наоборот? – crashmstr
Можете ли вы уточнить: «Я хочу, чтобы Class2 знал, когда строка« Текст »изменяется в Class1 и каково ее значение». Вы хотите, чтобы код в «Class2» запускался путем изменения класса Class1 или просто хотел, чтобы «Class2» всегда имел доступ к последнему значению из «Class1»? Вы хотите, чтобы он тоже работал? –