WPF ContextMenu复杂项目在点击时保持打开状态?

时间:2014-10-27 14:12:43

标签: wpf contextmenu

所以我有一个复杂的上下文菜单。它没有menuitems。它也有单选按钮,底部有一个堆栈面板,它有一个整数减少框。

contextmenu

<Button.ContextMenu>
    <ContextMenu>
        <RadioButton Tag="30" Content="30 seconds" GroupName="adLength" Checked="adLength_Checked" IsChecked="True"/>
        <RadioButton Tag="60" Content="1 minutes" GroupName="adLength" Checked="adLength_Checked"/>
        <RadioButton Tag="90" Content="1 min 30 sec" GroupName="adLength" Checked="adLength_Checked"/>
        <RadioButton Tag="120" Content="2 minutes" GroupName="adLength" Checked="adLength_Checked"/>
        <RadioButton Tag="150" Content="2 min 30 sec" GroupName="adLength" Checked="adLength_Checked"/>
        <RadioButton Tag="180" Content="3 minutes" GroupName="adLength" Checked="adLength_Checked"/>
        <Separator/>
        <MenuItem x:Name="advert_Auto" Header="Run Automatically" IsCheckable="true" StaysOpenOnClick="True"/>
        <StackPanel Orientation="Horizontal">
            <TextBlock>every</TextBlock>
            <xctk:IntegerUpDown x:Name="advert_Time" Value="30" Minimum="15" Width="50" Margin="5,0" />
            <TextBlock>min</TextBlock>
        </StackPanel>
    </ContextMenu>
</Button.ContextMenu>

<MenuItem>对象可以选择staysopenonclick;当有人点击该项目时,上下文菜单保持打开状态。 <RadioButton>对象没有该选项,但无论如何它们都保持打开状态。

我遇到的问题是最后一项<StackPanel>。当用户单击IntegerUpDown的文本区域时,上下文菜单将关闭。这使得很难按原样使用该项目。有没有更好的方法来完成我在上下文菜单中尝试做的事情?有没有办法让用户点击菜单外的上下文菜单?

1 个答案:

答案 0 :(得分:4)

只需将StackPanel填入MenuItem作为标题,并将StaysOpenOnClick属性设置为true

<MenuItem StaysOpenOnClick="True">
    <MenuItem.Header>
        <StackPanel Orientation="Horizontal">
            <TextBlock>every</TextBlock>
            <TextBox Text="30" Width="50" Margin="5,0" />
            <TextBlock>min</TextBlock>
        </StackPanel>
    </MenuItem.Header>
</MenuItem>