2014-03-19 22 views
0

我想创建一个简单的屏幕键盘创建使用按钮(当前是一个用户控制),在这些按钮我点击事件,当我点击/触摸我想要一个按钮的值发送到我的主窗口中的文本块。C#WPF userControl发送数据到mainWindow textBlock的buttonClick

我不能/不明白如何让用户控制(键盘)看到文本块(在主窗口)在我需要的增值。

我已经看到了使用命令绑定和使用的可视化树遍历解决方案,解决方案,但所有的人都访问用户的控制,而不是周围的其他方式的主窗口。

+1

那么,一个办法是暴露在控制的属性,并绑定你的文本块中的主窗口,以该财产。在点击按钮时更改属性的值。虽然可能有更好的解决方案。 – rmagon

回答

0

所有的例子是周围的其他方式,因为这是一个UserControl是如何工作的。

UserControl是可重复使用的功能性的包装件。它不应该知道使用它的代码。

相反,你应该揭露路由事件在UserControl的东西像一个被选择号码时,并订阅它们在你的主窗口。

0

有很多方法可以实现你想要什么。如果您的MainWindow.xamlUserControl,并且您想对MainWindow.xaml.cs文件中控件的更改作出反应,那么您可以将delegate添加到UserControl后面的代码中,并在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?的帖子,了解有关如何实现此目的的完整详细信息。