我一直在尝试在菜单中插入一个TextBox(及其相应的灰色值)。
我已经尝试了很多东西(下面是我的最新尝试)
1.要么textBox没有沿着所有菜单拉伸
1.菜单有一些奇怪的偏移
我试过把它放在网格里,但它在右边增加了一个奇怪的偏移
Image Example
<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>
上面的代码是我最新的尝试
1条答案
按热度按时间klsxnrf11#
原因是MenuItem有一个偏移量,导致您在TextBox的左侧和右侧看到蓝色高亮显示。
如果您希望MenuItem的区域更多地刷新到其容器的边缘,则需要覆盖该区域的ControlTemplate。搜索“wpf menuitem controltemplate”并转到显示示例的Microsoft页面。
在他们的示例中,您将看到类似于以下代码片段的内容:
修改最后一个
ColumnDefinition
的宽度,你会看到它对你的结果的影响。从这里开始,你可以随心所欲地使用网格列定义。* 注意:这将影响所有菜单项,因此请注意这一点。*