我正在尝试创建一个简单的屏幕键盘,使用按钮(目前是用户控件)创建,在那些按钮上我有一个点击事件,当我点击/触摸一个按钮我希望值该按钮发送到主窗口中的文本块。
我不能/不明白如何使用户控件(键盘)看到文本块(在主窗口中)添加我需要的价值。
我见过使用命令Bindings和使用可视树遍历的解决方案的解决方案,但所有这些都是访问用户控件的主窗口,而不是相反。
答案 0 :(得分:0)
所有示例都是相反的,因为这是UserControl
应该如何工作的方式。
UserControl
是一个可重复使用的功能包。它不应该知道使用它的代码。
相反,您应该在UserControl
中公开路由事件,例如选择时间号码,并在主窗口中订阅它们。
答案 1 :(得分:0)
有很多方法可以达到你想要的效果。如果您的MainWindow.xaml
有一个UserControl
,并且您希望对MainWindow.xaml.cs
文件中控件的更改作出反应,那么您可以向UserControl
添加delegate
}后面的代码并在MainWindow.xaml.cs
文件中为它注册一个处理程序。实现新的delegate
通常比实现RoutedEvent
更简单,这是另一种处理这种情况的方法。
使用这样的delegate
可以让您有效地将信号从后面的子UserControl
代码传递到主视图,您可以以任何方式做出反应。而不是在这里再次解释整个故事,请在Stack Overflow上的Passing parameters between viewmodels和How to call functions in a main view model from other view models?帖子中查看我的答案,详细了解如何实现这一目标。