gpt4 book ai didi

c# - 隐藏不可聚焦的 WPF 文本框的右键菜单

转载 作者:行者123 更新时间:2023-12-02 23:24:38 25 4
gpt4 key购买 nike

在下面的 WPF 应用程序中,当您右键单击文本框时,无论文本框是否可聚焦,您都会获得剪切/复制/粘贴右键菜单。我希望仅当文本框可聚焦时才显示右键单击菜单。你知道该怎么做吗?

<Window x:Class="TextBoxApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<Button Click="Button_OnClick"></Button>
<TextBox Focusable="False" Name="myTextBox"></TextBox>
</StackPanel>
</Grid>
</Window>

using System.Windows;
using System.Windows.Input;

namespace TextBoxApp
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void Button_OnClick(object sender, RoutedEventArgs e)
{
myTextBox.Focusable = !myTextBox.Focusable;
}
}
}

最佳答案

如果您不希望能够聚焦它,我认为使用

uiElement.IsHitTestVisible = false;

属性还会阻止您显示上下文菜单。它是一个依赖属性,因此您可以选择将其绑定(bind)到 Focusable 属性。

我认为这比仅针对 ContextMenu 更好,因为我认为您的功能要求是根本无法对文本框执行任何操作。

回应@Dr. Andrew Burnett-Thompson 我制作了以下 Xaml 示例:

    <TextBox Focusable="False">
<TextBox.Style>
<Style TargetType="TextBox">
<Style.Triggers>
<Trigger Property="Focusable" Value="False">
<Setter Property="IsHitTestVisible" Value="False"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>

关于c# - 隐藏不可聚焦的 WPF 文本框的右键菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711921/

25 4 0