当前位置:编程学习 > C#/ASP.NET >>

WPF ContextMenu问题

请问这段代码问题在哪里? (对不住,只有30分了,不知道怎么弄分)

<ListBox Name="UsualAlarmDescriptionList" Width="400" MaxHeight="150" MinHeight="60">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="删除" Click="MenuItemRemoveUsualAlarmDescription_Click"/>
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>


报这个错误:

设置 connectionId时引发了异常。....无法将类型为“System.Windows.Controls.MenuItem”的对象强制转换为类型“System.Windows.Controls.StackPanel” --------------------编程问答-------------------- 后台方法 MenuItemRemoveUsualAlarmDescription_Click 中的对象类型是StackPanel,但是前台是MenuItem,强制类型转换肯定会出问题 --------------------编程问答-------------------- 我也遇到了。。。可以用后台给MenuItem设置Click事件来解决问题 例如
 
 <Style TargetType="{x:Type DataGridCell}" x:Key="cell">
            <Setter Property="ContextMenu" >
                <Setter.Value>
                    <ContextMenu  Focusable="False"  >
                        <MenuItem Header="确认" Focusable="False"   />
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>

单独写一个Style,然后在后台写如下代码即可

   Style menu = this.FindResource("cell") as Style;
  (((menu.Setters[0] as Setter).Value as ContextMenu).Items[0] as MenuItem).Click += MenuItem_Click;
--------------------编程问答-------------------- 使用命令岂不是更佳 为什么要用时间呢? --------------------编程问答-------------------- 事件 不好意思 打错了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,