您可以通过使用delegate
s. delegates
您可以从 MSDN 上的Delegates(C# 编程指南)页面了解更多信息。
基本上,您需要delegate
在对象中创建一个或多个 s UserControl
......它们非常适合将信息从父母传递给孩子,反之亦然:
public delegate void ParentNotification(YourDataType dataTypeInstance);
然后是一个 getter 一个 setter:
public ParentNotification OnSelectionChanged { get; set; }
现在,实例化的窗口UserControl
可以为这些委托中的每一个注册一个处理程序:
<YourXmlNamespace:YourUserControl OnSelectionChanged="OnSelectionChangedhandler" />
delegate
然后添加一个与in的定义匹配的处理程序MainWindow.xaml.cs
:
public void OnSelectionChangedhandler(YourDataType dataTypeInstance)
{
// do something with dataTypeInstance
}
难题的最后一部分是在发生任何情况后调用delegate
from each UserControl
...在这种情况下,条件是选择发生了变化:
private void ComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
YourDataType dataTypeInstance = null;
if (e.AddedItems.Count > 0)
{
dataTypeInstance = (YourDataType)e.AddedItems[0];
if (OnSelectionChanged != null) // very important check here
{
OnSelectionChanged(dataTypeInstance);
}
}
}