В моем проекте wpf у меня есть usercontrol, содержащий панель меню для моей программы. Я не уверен, что это правильный способ сделать это, но хороший способ держать меня в секрете. Эта панель меню содержит множество кнопок с привязками команд с использованием mvvmlight toolkit eventtocommand, это отлично работает. Но у меня есть кнопка печати, где мне нужно передать объект Visual из mainwindow в commandparameter в usercontrol.Usercontrol параметр команды от родителя
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>
Я очень благодарен за вашу помощь.
@ethcallogics благодарит за ответ. Не совсем уверен, как делать то, о чем вы говорите, но было бы лучше сделать это по-другому? и что это? Изменить: мне нужно передать объект Visual, чтобы я мог его распечатать. Я собираюсь сделать дизайнера диаграмм. – freddy
Насколько я понимаю. Распечатайте его из представления. Зачем передавать его в ViewModel. Создайте задачу и напечатайте ее в этой задаче, чтобы поток пользовательского интерфейса не блокировал .ViewModel несет ответственность за поведение, основанное на данных, и печать не влияет на поведение. – ethicallogics
Я думаю, что, возможно, я был неясен. У меня есть MainWindow с MainGrid и menuBarUserControl. Кнопка, которая активирует команду печати, помещается в usercontrol, Visual (сетка), которую я хочу напечатать, является MainGrid в MainWindow. – freddy