gxlary 发表于 2015-5-28 16:39:00

C1MenuItem(急)

下图这个请问怎么实现

我不想封装控件有别的办法吗

KNight 发表于 2015-5-28 17:40:00

回复 1楼gxlary的帖子

<c1:C1MenuItem Header="割增追加">
    <c1:C1MenuItem KeyDown="C1MenuItem_KeyDown">
      <c1:C1MenuItem.Header>
            <HeaderedContentControl>
                <Grid>
                  <Grid.ColumnDefinitions>
                        <ColumnDefinition />
                        <ColumnDefinition />
                  </Grid.ColumnDefinitions>
                  <TextBox Height="23" Width="100" Text="100" Grid.Column="0" KeyDown="TextBox_KeyDown" />
                  <TextBlock Text="%" Grid.Column="1" />
                </Grid>
            </HeaderedContentControl>
      </c1:C1MenuItem.Header>
    </c1:C1MenuItem>
</c1:C1MenuItem>

不过有一个问题是,得重写TextBox的KeyDown事件,不然如法输入内容:itwn:

gxlary 发表于 2015-5-28 18:12:00

十分感谢

Alice 发表于 2015-5-28 18:27:00

回复 3楼gxlary的帖子

感谢对该问题的反馈。
你可以通过2楼的方法实现你的需求。
如果有差别,我们再来讨论。

gxlary 发表于 2015-6-2 17:35:00

回复 4楼Alice的帖子

你好啊
我还想在追问一个问题
我想实在点击子菜单的同时
如何不关闭整个菜单,
还让菜单表示

KNight 发表于 2015-6-2 18:11:00

回复 5楼gxlary的帖子

是要在点击子菜单时,整个菜单目录不自动关闭是吧?你可以在C1MenuItem中实现PreviewMouseRightButtonUp 事件,并在事件中设置 e.Handle=true; 即可;这样既可以自动关闭菜单,而且不影响子菜单里面自定义控件的鼠标事件,不过这样会出现一个问题,子菜单的离开焦点触发会有问题,你试试看,我这边会出现在菜单外边随便点击,菜单也不会自动关闭,造成卡死现象,除非windows切换一下其他窗口,或者程序弹窗什么的之后,就正常了,暂时没找到原因;如果子菜单中没有自定义控件用到鼠标事件,可以用 PreviewMouseRightButtonDown 事件进行设置,这样离开焦点就不会有问题了,不过子菜单中自定义的控件的鼠标事件就失效了;仅供参考:jy74a:

gxlary 发表于 2015-6-2 18:37:00

回复 6楼KNight的帖子

你好
我这是2011j for silverlight(日文版的)
好像没有你说的这个事件啊

Alice 发表于 2015-6-3 13:54:00

回复 7楼gxlary的帖子

你好。
根据你的描述,你使用的是日文版的silverlight。
Silverlight没有PreviewMouseRightButtonUp等相关事件。
你可以尝试找到这个MenuItem并且展示设置IsOpen=true。
var g=VisualTreeHelper.GetChild(mi, 0) as Grid;//mi is a C1MenuItem
         var p=g.FindName(&quot;SubItemsPopup&quot;) as Popup;
         p.IsOpen = true;

KNight 发表于 2015-6-3 14:21:00

回复 7楼gxlary的帖子

:-| 抱歉理解错了,一直以为是WPF,我试了一下,如果是Silverlight里的C1MenuItem,你可以在最底层的C1MenuItem的Click事件里加上他上一层C1MenuItem的一个属性,就是设置miDeep4.IsSubmenuOpen = true; 即可在单击后不会自动关闭菜单栏;
<C1:C1MenuItem Header="Deep4" x:Name="miDeep4">
<C1:C1MenuItem Header="Deep5" Click="C1MenuItem_Click">
</C1:C1MenuItem>
</C1:C1MenuItem>

private void C1MenuItem_Click(object sender, C1.Silverlight.SourcedEventArgs e)
                {
                        C1MenuItem menu = sender as C1MenuItem;
                        if (menu.Header.ToString().Equals("Deep5"))
                        {
                                miDeep4.IsSubmenuOpen = true;
                        }
                }

Alice 发表于 2015-6-3 17:34:00

回复 9楼KNight的帖子

谢谢反馈。
页: [1] 2
查看完整版本: C1MenuItem(急)