2014-03-19 23 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?的帖子,瞭解有關如何實現此目的的完整詳細信息。