Вы, безусловно, можете выбрать инфраструктуру привязки / свойства зависимостей для прослушивания изменений во вложенном свойстве.Код ниже - WPF, но я думаю, что вы можете сделать нечто подобное в Silverlight:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = new Parent { Child = new Child { Name = "Bob" } };
this.SetBinding(ChildNameProperty, new Binding("Child.Name"));
}
public string ChildName
{
get { return (string)GetValue(ChildNameProperty); }
set { SetValue(ChildNameProperty, value); }
}
// Using a DependencyProperty as the backing store for ChildName. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ChildNameProperty =
DependencyProperty.Register("ChildName", typeof(string), typeof(MainWindow), new UIPropertyMetadata(ChildNameChanged));
static void ChildNameChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MessageBox.Show("Child name is now " + e.NewValue);
}
}
Так что я определил свой собственный DependencyProperty
, а не часть какого-либо пользовательского интерфейса как такового (только класс MainWindow
)) и привязать к нему «Child.Name» напрямую.Затем я смогу получать уведомления, когда Child.Name
меняется.
Будет ли это работать для вас?