C#WPF userControl将数据发送到mainWindow textBlock on button Click

时间:2014-03-19 11:03:59

标签: c# wpf xaml user-controls

我正在尝试创建一个简单的屏幕键盘,使用按钮(目前是用户控件)创建,在那些按钮上我有一个点击事件,当我点击/触摸一个按钮我希望值该按钮发送到主窗口中的文本块。

我不能/不明白如何使用户控件(键盘)看到文本块(在主窗口中)添加我需要的价值。

我见过使用命令Bindings和使用可视树遍历的解决方案的解决方案,但所有这些都是访问用户控件的主窗口,而不是相反。

2 个答案:

答案 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 viewmodelsHow to call functions in a main view model from other view models?帖子中查看我的答案,详细了解如何实现这一目标。