c# WPF在菜单中插入一个文本框



我一直在尝试在菜单中插入一个文本框(其相应的灰色值)。

我已经尝试了很多事情(除了我最近的尝试)

  1. 文本框没有沿着整个菜单拉伸

  2. 菜单有一些奇怪的偏移

我试着把它放在一个网格中,但是它在右边增加了一个奇怪的偏移

图像示例

<Window x:Class="NotepadMain.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:NotepadMain"
mc:Ignorable="d"
Title="FirePad - A Notepad for the 21st Century" Height="450" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel LastChildFill="True" Grid.Row="0" VerticalAlignment="Center">
<Menu DockPanel.Dock="Top"
FontFamily="Consolas"
FontSize="20">
<MenuItem Header="_File" Width="auto">
<MenuItem Header="New" x:Name="newMenus" >
<MenuItem.Icon>
<Image Source="Assets/new.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Save" x:Name="saveMenus" Click="saveMenus_Click" >
<MenuItem.Icon>
<Image Source="Assets/save.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="SaveAs" x:Name="saveAsMenus" Click="saveAsMenus_Click" >
<MenuItem.Icon>
<Image Source="Assets/save_as.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Open" x:Name="openMenus" Click="openMenus_Click">
<MenuItem.Icon>
<Image Source="Assets/open.png"/>
</MenuItem.Icon>
</MenuItem>
<Separator />
<MenuItem Header="Print">
<MenuItem.Icon>
<Image Source="Assets/print.png"/>
</MenuItem.Icon>
</MenuItem>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Copy" x:Name="copyMenus" >
<MenuItem.Icon>
<Image Source="Assets/copy.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Paste" x:Name="pasteMenus" >
<MenuItem.Icon>
<Image Source="Assets/paste.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Cut" x:Name="cutMenus" >
<MenuItem.Icon>
<Image Source="Assets/cut.png"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<MenuItem Header="Undo" x:Name="undoMenus" >
<MenuItem.Icon>
<Image Source="Assets/undo.png"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Redo" x:Name="redoMenus" >
<MenuItem.Icon>
<Image Source="Assets/redo.png"/>
</MenuItem.Icon>
</MenuItem>
<Separator/>
<TextBox  TextWrapping="Wrap" Width="100" Grid.Column="0">
<TextBox.ToolTip>Highlight a Word in the Text</TextBox.ToolTip>
</TextBox>
</MenuItem>

</Menu>
</DockPanel>
<RichTextBox Grid.Row="1" x:Name="richTextBox1">

</RichTextBox>

</Grid>
</Window>

上面的代码是我最近的一次尝试

原因是菜单项有一个偏移量,导致您在文本框的左右两侧看到带蓝色的高亮。

如果你想让菜单项的区域更接近其容器的边缘,你需要重写菜单项的ControlTemplate。搜索"wpf菜单项controltemplate";并进入微软的页面,上面有一个例子。

在他们的示例中,您将看到如下代码片段:
<!-- SubmenuItem -->
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}"
TargetType="{x:Type MenuItem}">
<Border x:Name="Border"
BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"
SharedSizeGroup="Icon" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto"
SharedSizeGroup="Shortcut" />
<ColumnDefinition Width="13" />
</Grid.ColumnDefinitions>
<ContentPresenter x:Name="Icon"
Margin="6,0,6,0"
VerticalAlignment="Center"
ContentSource="Icon" />

修改最后一个ColumnDefinition的宽度,你会看到它对结果的影响。从这里开始,您可以按照自己想要的方式使用gridcolumndefinition。

注意:这将影响你所有的菜单项,所以要注意这一点。

相关内容

  • 没有找到相关文章

最新更新