菜单项是菜单的子元素,其为用户提供查看和执行特定应用程序操作的手段。
我正在研究/学习 WPF 以与 PowerShell 一起使用。我需要一个自定义的 MenuItem,我设法想出了下面的代码。该代码运行良好并且保留了传统
我想使用远程图像作为底部导航中的图标。 线圈版本是3.0.4 要将图像设置为菜单项,它必须是可绘制类,但是当线圈更新到版本3时,它更改为
带有 Caliburn.Micro 的 MenuItem 无法将 Item 传递给方法
我有以下Xaml: 我有以下 Xaml: <DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" SelectionMode="Single"> <DataGrid.ContextMenu> <ContextMenu MinWidth="200"> <MenuItem cal:Message.Attach="[Click] = [Action OnGroupSelected($data)]" Header="Move Item to Group" ItemsSource="{Binding Groups}"> <MenuItem.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Name}" /> </DataTemplate> </MenuItem.ItemTemplate> </MenuItem> </ContextMenu> </DataGrid.ContextMenu> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Name}" Header="Name" /> <DataGridTextColumn Binding="{Binding Description}" Header="Description" /> </DataGrid.Columns> </DataGrid> 我希望在单击 DataGrid 项目时出现一个上下文菜单,它将显示我想要将项目移动到的可用组的列表。 我可以让 ContextMenu 显示所有组及其名称并调用 OnGroupSlected(Group SelectedGroup) 但 SelectedGroup 为空。如何正确地将Item传递给OnGroupSlected?我正在使用 Caliburn.Micro 来处理 MVVM。 我尝试了很多方法,但没有一个有效: <MenuItem Header="Move Item to Group" ItemsSource="{Binding Groups}"> <MenuItem.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Name}" /> </DataTemplate> </MenuItem.ItemTemplate> <MenuItem.ItemContainerStyle> <Style TargetType="MenuItem"> <Setter Property="cal:Message.Attach" Value="[Click] = [Action OnGroupSelected($data)]" /> </Style> </MenuItem.ItemContainerStyle> </MenuItem> 我尝试解决你的问题并最终得到了这个解决方案: 在 XAML 中使用:cal:Message.Attach="[Click] = [Action OnGroupSelected($eventArgs)]" 您使用了 $data,默认情况下不存在。 在您的代码中,您可以像这样访问它: public void OnGroupSelected(RoutedEventArgs args) { if (args.OriginalSource is FrameworkElement fe) { if (fe.DataContext is Group group) { MessageBox.Show(group.Name); } } } 或者您可以在 XAML 中使用 $data,但在代码中您需要先指定(添加)它: ... MessageBinder.SpecialValues.Add("$data", value => { if (value.EventArgs is not RoutedEventArgs args) return null; if (args.OriginalSource is not FrameworkElement fe) return null; return fe.DataContext; }); 在 XAML 中使用:cal:Message.Attach="[Click] = [Action OnGroupSelected($data)]" 代码中: public void OnGroupSelected(Group SelectedGroup) { MessageBox.Show(SelectedGroup.Name); } 希望这对您有帮助。
我需要更改默认人力资源菜单的操作。 当我点击“人力资源菜单”时,它将进入左侧的“员工”菜单,但我需要去留下请求目录...
我有3个条件(菜单中有3个菜单项)。 在这 3 项中,如何在 JFrame 打开并默认显示该菜单项的内容时立即选择该菜单项? 稍后,如果我们选择...
WPF TextBox MenuItem 在移动鼠标时失去焦点
在我的 WPF 应用程序中,我希望菜单项有一个文本框。我已经设法使用以下代码来做到这一点: 在我的 WPF 应用程序中,我希望菜单项有一个文本框。我已经设法使用以下代码来做到这一点: <Menu Height="23" HorizontalAlignment="Stretch" Name="MainMenu" VerticalAlignment="Top"> <MenuItem Header="File"> <MenuItem Header="Exit" Click="menuItemExit_Click" /> </MenuItem> <MenuItem Header="Settings"> <MenuItem Header="Some setting" IsCheckable="True" /> <Separator /> <MenuItem> <MenuItem.Header> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Label Content="Some value:" Margin="0,3,6,0" Padding="0" /> <TextBox Margin="0,0,0,6" Grid.Column="1" /> </Grid> </MenuItem.Header> </MenuItem> </MenuItem> </Menu> 此代码按我的预期显示菜单项,但如果我开始在文本框中输入一些值,然后将鼠标(而不是单击)移离文本框菜单项,则文本框将失去焦点,并且我无法继续输入,直到我再次单击文本框。如何实现与 WinForms 中的文本框菜单项相同的行为?也就是说,只有当用户在文本框外部单击或按 Tab 键时,文本框才会失去焦点。 提前致谢。 正如我所写,我不确定您如何使用菜单控件。 但也许这段代码可以帮助你或给你一个提示: <TextBox Margin="0,0,0,6" Grid.Column="1" PreviewLostKeyboardFocus="OnPreviewLostKeyboardFocus"/> 以及相应的方法: private void OnPreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) { if (MainMenu.IsKeyboardFocusWithin) { e.Handled = true; } } 我知道这个答案可能为时已晚,无法帮助您,但也许它会帮助任何寻找此问题解决方案的人。 在菜单项上设置 Focusable=false 也可以。 它仍然允许单击它们并允许它们包含的控件获得焦点。 但是,它禁用了仅使用键盘导航菜单的功能,从而引入了可访问性问题。 可访问性问题可以通过一点创意来解决,方法是为每个菜单项提供一个可聚焦的元素。 例如: <MenuItem Focusable="False"> <MenuItem.Header> <StackPanel Orientation="Horizontal" Focusable="True" FocusVisualStyle="{x:Null}"> <TextBlock Text="Do something!" /> </StackPanel> </MenuItem.Header> </MenuItem> 需要 FocusVisualStyle="{x:Null}" 代码来隐藏否则会出现的虚线焦点(并且在菜单中看起来不合适)。 也许这有帮助: <MenuItem StaysOpenOnClick="True"> <MenuItem.Header> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Label Content="Some value:" Margin="0,3,6,0" Padding="0" /> <TextBox Margin="0,0,0,6" Grid.Column="1" /> </Grid> </MenuItem.Header> </MenuItem> 自定义 ComboBox 项目也面临同样的问题。在我的例子中,这个问题的根本原因是 ComboBoxItem 事件的 MouseEnter 处理程序: e.Handled = true; this.ParentComboBox?.NotifyComboBoxItemEnter(this); base.OnMouseEnter(e); 而且NotifyComboBoxItemEnter看起来像 if (!this.IsDropDownOpen || Mouse.Captured != this || !this.DidMouseMove()) return; this.HighlightedInfo = this.ItemInfoFromContainer((DependencyObject) item); if (this.IsEditable || item.IsKeyboardFocusWithin) return; item.Focus(); 所以它确实将焦点集中在鼠标输入上。我怀疑菜单项中可能有类似的东西(例如扩展子菜单)。 我通过重写自定义组合框项类上的 OnMouseEnter 来避免调用基本方法解决了这个问题。 接受的解决方案有效,但会阻止键盘导航。
在 SwiftUI 中,按住选项键时如何在 2 个菜单项之间切换 就像当您打开 Finder 文件菜单并按下选项键时,某些项目会交替出现 可悲的是我的方法...
我有一个 Delphi 10.4.2 程序(32 位),其中在程序加载期间添加菜单项(Application.OnActivate 事件,编码为仅运行一次)。如果没有 vcl 样式,则会显示新项目
我正在尝试在菜单项的“a”标签上生成唯一的 id,以便我可以实现 Popups API。 这就是我在 template.php 中的函数的样子: 函数 phptemplate_menu_item_link($li...
我正在处理上下文菜单项,以便在单击上下文菜单项时显示消息框。当我创建自定义右侧时,上下文菜单项的单击事件将不会触发
我被引导到这里的现有答案: https://stackoverflow.com/a/60222653/2287576 但我正在努力遵循该准则。这就是我所拥有的: CPng图像png; png.Load(IDB_PNG_MENU_REPORT,
我尝试完成的事情非常简单:将图像添加到菜单项。我正在使用 win32 API 用 C 进行编程。图像/位图显示,但背景为白色。我想要的是转...
下拉导航不适用于移动设备(JavaScript、HTML、CSS)
我使用 JS 和 SCSS 构建了一个导航。在桌面上它工作得很好,一些移动设备(如 Galaxy S10)也显示下拉菜单。但当我点击...时,大多数其他移动设备什么也不做。
我的网站 http://jointviews.com/ 带有标题菜单。关于我们和数字营销的标题菜单项在每个项目下都有子菜单。当我将鼠标悬停在下拉子菜单项上时,父菜单会返回...
我想知道是否可以修改以下闪亮的应用程序并将 sliderInput 放入侧边栏部分: 图书馆(闪亮的仪表板) 用户界面 <- dashboardPage( dashboardHeader(title = "DB mana...
无法在 C++/CLI 中从 System::Object 转换为 System::Windows::Forms::MenuItem
我正在处理我的 C++/CLI 项目,因为我正在添加带有单击事件的子菜单项。我在获取菜单项的文本时遇到问题,因为当我尝试这样做时: 调试::WriteLine("Smt...
我正在开发我的 C++ 项目,因为我正在添加带有单击事件的子菜单项。我在获取菜单项的文本时遇到问题,因为当我尝试这样做时: 调试::WriteLine("SmtpEma...
R闪亮仪表板必须关闭childfull menuItem才能使sidebarItemExpanded正常工作
交叉发布到 RStudio 社区。 我正在开发一个闪亮的仪表板,并尝试让右侧边栏根据扩展的左侧边栏菜单项来显示不同的内容。 该项目...