2013-12-08 68 views
0

在我的wpf項目中,我有一個包含我的程序菜單欄的用戶控件。林不知道這是做到這一點的正確方法,但保持我分離的好方法。這個菜單欄包含許多使用mvvmlight toolkit eventtocommand進行命令綁定的按鈕,這非常適用。但是我有一個打印按鈕,我需要將一個Visual對象從mainwindow傳遞給usercontrol中的commandparameter。家長用戶控制命令參數

Usercontrol.xaml - 其中MasterGrid是mainwindow中的元素名稱。

<MenuItem Header="_Print" Command="{Binding PrintDiagramCommand}" 
      CommandParameter="{Binding ElementName=MasterGrid}" 
      InputGestureText="Ctrl+P"> 
    <MenuItem.Icon> 
     <Image Height="24" Width="24" Source="/Resources/Icons/print.ico"/> 
    </MenuItem.Icon> 
</MenuItem> 

我真的很感謝你的幫助。

回答

0

試試這個,雖然我沒有測試過它。 ElementName和x:參考瞭如何找到元素,因爲contextmenu不是VisualTree的一部分,所以ElementName不會工作。

CommandParameter="{Binding Source={x:Reference MasterGrid}}" 

我希望這會有所幫助。

注:它不是一個好的做法,以訪問視圖模型元素。

+0

@ethcallogics謝謝你的回答。不太清楚如何按照你提到的方式來做,但是以不同的方式做它會更好嗎?那是什麼?編輯:我必須通過一個Visual對象,以便我可以打印它。我即將成爲一名圖表設計師。 – freddy

+0

據我的理解從視圖打印它爲什麼把它傳遞給ViewModel。創建一個任務並將其打印在此任務中,以便UI線程不會阻止.ViewModel負責基於數據和打印的任何行爲。 – ethicallogics

+0

我想我可能一直不清楚。我有一個主窗口MainGrid和menuBarUserControl。激活打印命令的按鈕放置在用戶控件中,我想打印的Visual(網格)是MainWindow中的MainGrid。 – freddy