zoukankan      html  css  js  c++  java
  • WPF之ContextMenu的命定绑定

    在WPF中右击菜单项的XMAL代码是:

    <ContextMenu x:Key="sampleContextMenu">
    <MenuItem Header="在前面插入行" Click="InsertRowFront_Click"/>
    <MenuItem Header="在后面插入行" Click="InsertRowBehind_Click"/>
    <MenuItem Header="删除行" Click="DeleteRow_Click"/>
    <MenuItem Header="debug1" Command="{Binding cmd1}"/>
    </ContextMenu>

    比如想在TEXTBOX中右击时候出现菜单,只需有在TEXTBOX中使用

                    <TextBox x:Name="textBoxName" Text="{Binding textValue,Mode=TwoWay}" Width="75" Height="36" ContextMenu="{StaticResource sampleContextMenu}" Style="{DynamicResource TextBoxStyle1}"/>

    然后以上代码如果是在<UserControl>标签中使用的话,使用Click绑定的函数只能定义在<UserControl>的后台代码中,如果使用Command绑定的话,不管命定定义在<UserControl>还是引用<UserControl>的<Window>的后台代码中,都无法有效绑定,经过多次尝试,我在XMAL中引入MainWindow,将命定cmd1定义在Mainwindow的后台代码中

    <local:MainWindow x:Key="dataContextProxy"/>

    然后将菜单代码改为 <MenuItem Header="debug1" Command="{Binding cmd1,Source={StaticResource dataContextProxy}}"/>

    发现有效使用命令。

    之前我在<UserControl>的后台代码中定义命定使用this.DataContext=this,无法有效绑定命定,在<MainWindow>d的后台代码中定义命定并将UserControl的DataContext指向MainWindow同样无效。至于为什么会出现这种情况,等以后有时间慢慢研究。。

    至于为何会出现这种情况,还等以后有时间慢慢研究。

  • 相关阅读:
    图片压缩ShareSDK的简化压缩和使用例子
    qml 调试
    BSP 算法
    粒子系统(Particle System)
    QML Item Element
    Chapter 13. Playing God: Basic Physics Modeling (Tricks.of.the.Windows.Game.Programming.Gurus,.Second.Edition)
    qml资料
    wpf教程
    凸包
    QML Animation
  • 原文地址:https://www.cnblogs.com/lelehellow/p/6409121.html
Copyright © 2011-2022 走看看