【问题标题】:Usercontrol command parameter from parent来自父级的用户控制命令参数
【发布时间】:2013-12-08 03:17:44
【问题描述】:

在我的 wpf 项目中,我有一个用户控件,其中包含我的程序的菜单栏。我不确定那是正确的做法,但是让我保持分离的好方法。该菜单栏包含许多使用 mvvmlight 工具包 eventtocommand 进行命令绑定的按钮,这非常有效。但是我有一个打印按钮,我需要将一个 Visual 对象从主窗口传递给用户控件中的命令参数。

Usercontrol.xaml - 其中 MasterGrid 是主窗口中的元素名称。

<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>

非常感谢您的帮助。

【问题讨论】:

    标签: c# wpf xaml user-controls mvvm-light


    【解决方案1】:

    试试这个,虽然我还没有测试过。 ElementName 和 x:Reference 存在差异,因为 contextmenu 不是 VisualTree 的一部分,因此 ElementName 不起作用。

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

    我希望这会有所帮助。

    注意:在 ViewModel 中访问元素不是一个好习惯。

    【讨论】:

    • @ethcallogics 感谢您的回答。不太确定如何按照您提到的方式进行操作,但是以不同的方式进行操作会更好吗?那是什么?编辑:我必须传递一个 Visual 对象才能打印它。我即将成为一名图表设计师。
    • 据我了解,从 View 打印它为什么要传递给 ViewModel 。创建一个任务并在此任务中打印它,这样 UI 线程就不会阻塞。ViewModel 负责基于数据的行为,而打印不会看到任何行为。
    • 我想我可能不清楚。我有一个带有 MainGrid 和 menuBarUserControl 的 MainWindow。激活打印命令的按钮放在用户控件中,我要打印的Visual(网格)是MainWindow中的MainGrid。
    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2010-11-21
    相关资源
    最近更新 更多