【问题标题】:Adding controls to Contextmenu将控件添加到上下文菜单
【发布时间】:2015-01-09 05:47:37
【问题描述】:

我有一个上下文菜单,我也想添加一些控件。在下面的示例中,我添加了一个 TextBox、CheckBox 和一个 Slider。

<ContextMenu>
    <MenuItem Header="Cut"
                Command="Cut" />
    <MenuItem Header="Copy"
                Command="Copy" />
    <MenuItem Header="Paste"
                Command="Paste" />
    <Separator />

    <Border Background="#999"
            BorderThickness="1"
            BorderBrush="Black"
            Padding="5">
        <Grid Width="300">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto" />
                <ColumnDefinition Width="8" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
                <RowDefinition Height="auto" />
            </Grid.RowDefinitions>

            <Label Content="PropA"
                    Grid.Column="0"
                    Grid.Row="0" />
            <Label Content="PropB"
                    Grid.Column="0"
                    Grid.Row="1" />
            <Label Content="PropC"
                    Grid.Column="0"
                    Grid.Row="2" />

            <TextBox Text="-10"
                        Grid.Column="2"
                        Grid.Row="0" />
            <CheckBox Grid.Column="2"
                        Grid.Row="1" />
            <Slider Grid.Column="2"
                    Grid.Row="2" />
        </Grid>
    </Border>
</ContextMenu>  

这会导致:

有没有办法让它看起来更好?

我可以禁用 MenuItem 周围的可选蓝色边框(显示为红色)吗?

我可以拉伸控件以适应菜单吗?

【问题讨论】:

    标签: c# wpf xaml contextmenu menuitem


    【解决方案1】:

    您的Border 包含在MenuItem 中。你可以做的是使用MenuItem 并移动Border 作为它的模板

    <ContextMenu>
       <MenuItem Header="Cut" Command="Cut" />
       <MenuItem Header="Copy" Command="Copy" />
       <MenuItem Header="Paste" Command="Paste" />
       <Separator />
       <MenuItem>
          <MenuItem.Template>
             <ControlTemplate TargetType="{x:Type MenuItem}">
                <Border Background="#999" BorderThickness="1" BorderBrush="Black" Padding="5">
                   <Grid Width="300">
                      <Grid.ColumnDefinitions>
                         <ColumnDefinition Width="auto" />
                         <ColumnDefinition Width="8" />
                         <ColumnDefinition Width="*" />
                      </Grid.ColumnDefinitions>
                      <Grid.RowDefinitions>
                         <RowDefinition Height="auto" />
                         <RowDefinition Height="auto" />
                         <RowDefinition Height="auto" />
                      </Grid.RowDefinitions>
                      <Label Content="PropA" Grid.Column="0" Grid.Row="0" />
                      <Label Content="PropB" Grid.Column="0" Grid.Row="1" />
                      <Label Content="PropC" Grid.Column="0" Grid.Row="2" />
                      <TextBox Text="-10" Grid.Column="2" Grid.Row="0" />
                      <CheckBox Grid.Column="2" Grid.Row="1" />
                      <Slider Grid.Column="2" Grid.Row="2" />
                   </Grid>
                </Border>
             </ControlTemplate>
          </MenuItem.Template>
       </MenuItem>
    </ContextMenu>
    

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      相关资源
      最近更新 更多