AvalonDock 现在失去 Alt 键装饰

2023-12-06

I've been using AvalonDock (2.0) for some time now, being key for managing documents in an IDE. In the last month or so, I've noticed that Alt key adornments are no longer showing up for controls within AvalonDock, though the Alt key commands are executing as expected. See the image below where the Alt key adornments are showing up in the menu, but not for the buttons inside AvalonDock:

No Alt Keys

这个问题特别有趣的是,它似乎是由环境设置或条件触发的。

正如本中所演示的video(2:07),alt 键装饰适用于 AvalonDock 内的控件。但是,如果我现在使用与该视频中使用的完全相同的可执行文件,则 alt 键装饰不起作用。

我目前使用的是 build 2.0.1746,但我也尝试了 build 2.0.2000(使用 Xceed 命名空间)并发现了同样的问题。我也尝试了附带的版本Xceed 扩展 WPF 工具包,发现问题依然存在。

我还构建了一个非常简单的测试应用程序,它加载几个类型的文档Item, where Item是一个简单的类Name财产:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication1"
        xmlns:avalonDock="clr-namespace:Xceed.Wpf.AvalonDock;assembly=Xceed.Wpf.AvalonDock"
        xmlns:avalonDockLayout="clr-namespace:Xceed.Wpf.AvalonDock.Layout;assembly=Xceed.Wpf.AvalonDock"
        xmlns:avalonDockControls="clr-namespace:Xceed.Wpf.AvalonDock.Controls;assembly=Xceed.Wpf.AvalonDock"
        Title="MainWindow" Height="500" Width="500">
    <Window.Resources>
        <ResourceDictionary>
            <DataTemplate DataType="{x:Type local:Item}">
                <StackPanel Orientation="Vertical">
                    <Label Content="Item:" />
                    <TextBox Text="{Binding Name}"/>
                    <Button Content="_ClickMe" />
                </StackPanel>
            </DataTemplate>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
          <RowDefinition Height="*"></RowDefinition>
          <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <avalonDock:DockingManager Grid.Row="0"  DocumentsSource="{Binding}">
            <avalonDockLayout:LayoutRoot>
                <avalonDockLayout:LayoutPanel Orientation="Horizontal">
                    <avalonDockLayout:LayoutDocumentPane/>
                </avalonDockLayout:LayoutPanel>
            </avalonDockLayout:LayoutRoot>
        </avalonDock:DockingManager>
        <Button Grid.Row="1" Content="_Test" />
    </Grid>
</Window>

Even with this simple application, the Alt key adornments show up for the Test button outside of AvalonDock, but not for the ClickMe buttons for the controls within AvalonDock.

我也发布了这个问题here在 AvalonDock codeplex 站点上,但响应活动似乎很少。我也发布了这个问题here在扩展工具包 codeplex 网站上。

关于如何纠正或解决此问题有什么想法吗?


听起来好像这个问题将在下一版本的 AvalonDock 中得到解决。

同时,以下 Blend 行为是一种解决方法:

public class FixKeyboardCuesBehavior : Behavior<UIElement>
{
    private static readonly DependencyProperty ShowKeyboardCuesProperty;

    static FixKeyboardCuesBehavior()
    {
        Type keyboardNavigation = typeof(KeyboardNavigation);
        var field = keyboardNavigation.GetField("ShowKeyboardCuesProperty", BindingFlags.NonPublic | BindingFlags.Static);

        Debug.Assert(field != null, "field != null");

        ShowKeyboardCuesProperty = (DependencyProperty)field.GetValue(null);
    }

    protected override void OnAttached()
    {
        base.OnAttached();

        Window rootWindow = Window.GetWindow(this.AssociatedObject);
        if (rootWindow == null)
        {
            return;
        }

        BindingOperations.SetBinding(
            this.AssociatedObject,
            ShowKeyboardCuesProperty,
            new Binding("(KeyboardNavigation.ShowKeyboardCues)") { Source = rootWindow });
    }
}

通过将以下内容添加到 XAML 的根元素中来使用它DataTemplate对于阿瓦隆码头LayoutItemTemplate:

<i:Interaction.Behaviors
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
    <my:FixKeyboardCuesBehavior />
</i:Interaction.Behaviors>

This workaround uses internal implementation details of WPF to re-introduce the Alt behaviour below the broken AvalonDock logical tree. So, I'll be looking forward to being able to zap it from my code when AD itself is fixed!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AvalonDock 现在失去 Alt 键装饰 的相关文章

  • 绑定导致 StackOverflow

    我不确定我在这里做错了什么 可以说 我有两个用户控件BoxAand BoxB 两者都有一个名为的 DependencyPropertyText BoxB 包装了具有常规 TextBox 的 BoxA 绑定应该像这样 BoxB Text Bo
  • 缓冲数据库游标中的数据,同时保持 UI 响应

    我有一个已填充的数据库目录和一个可用于检索对象的游标 这个目录显然可能非常大 我想做的是使用反应式用户界面缓冲数据 同时保持 UI 数据绑定和响应 我按照步骤操作here http www interact sw co uk iangblo
  • 异步WCF调用来保存线程?

    In 另一个问题 https stackoverflow com q 19731600 279516 建议我发送异步网络请求 而不是在后台线程上发送同步请求 原因是为了不浪费一根线 我试图理解这是怎么回事 这是最初的做法 我可以理解这里怎么
  • WPF 错误:属性元素不能位于元素内容的中间。它们必须位于内容之前或之后

    我有一个MergedDictionaries and DateTemplate里面一个ResourceDictionary一切都很好 直到我添加了一个Converter
  • 如何将文本放在 RadioButton 的顶部

    我正在尝试实现附件中显示的效果 但没有成功 甚至有可能吗 我试图将文本框放在单选按钮内 并将其设置为水平和垂直内容对齐 但它没有按我想要的方式工作 欢迎任何建议 Resource
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • 如何从 XAML 设置 WPF 用户控件属性?

    我试图从 XAML 设置同一用户控件的多个实例的 fill 属性 以便区分它们 我在控件的 C 代码隐藏中使用依赖属性 并在实例化控件时在 XAML 中引用该属性 这是我尝试过的简化示例 首先是用户控件的 XAML
  • 在后台进程中访问 WPF FlowDocument

    在后台访问 WPF FlowDocument 我的问题涉及在 WPF 后台访问 UI 对象 我见过几十个示例应用程序 它们都很简单 易于理解 其中 95 告诉你如何显示进度条 这并不是我想要的 我的问题是这样的 我想通过访问 RichTex
  • 如何从作为 UWP 运行的 WPF 应用程序处理文件激活?

    我有一个WPF我想要处理文件激活的应用程序 我找到了通过向注册表添加特定值来解决问题的解决方案 问题是最终的应用程序应该是UWP应用程序 我正在使用桌面桥来执行此操作 如果应用程序运行为UWP 它无法到达注册表来设置这些特定值 有没有其他方
  • 如何从 C# 代码访问 wpf 中的 ResourceDictionary?

    我有一个DataTemplate在我想通过 C 代码访问的 xaml 文件中定义 谁能告诉我如何访问它 我添加了一个新的ResourceDictionary文件 其名称是Dictionary1 xaml 我有一个数据模板 例如
  • 使用 Assembly.ReflectionOnlyLoadFrom 加载 WPF 项目引用的程序集时出现奇怪的 FileLoadException

    我有一个自定义 MSBuild 任务 可以查看程序集内部以获取一些属性元数据 Assembly assembly Assembly ReflectionOnlyLoadFrom AssemblyFile 这是我们的自动化构建 发布流程所使用
  • WPF 在菜单上选择项目或在视图模型中获取命令参数

    我正在寻找几个小时来解决一个简单的问题 我想在我的菜单项上使用 SelectedItem 但经过几个小时的 stackoverflow 我发现这是不可能的 我发现了很多关于 CommandParameter 的信息 但我不明白它是如何工作的
  • Control.Focus() 和 FocusManager.SetFocusedElement() 之间的区别

    从字面上看 我想知道这一点 在某些情况下 Focus 看起来比 SetFocusedElement 更好 但另一种情况 则是逆转 所以我必须知道那里有什么不同的东西 另外 根据 MSDN Focus 用于键盘焦点 SetFocusedEle
  • WPF:将布尔值显示为“是”/“否”

    我有一个布尔值 需要在 TextBlock 中显示为 是 或 否 我尝试使用 StringFormat 执行此操作 但我的 StringFormat 被忽略并且 TextBlock 显示 True 或 False
  • ListBox.ScrollIntoView() 似乎在 WP7 中不起作用

    每当将新项目添加到项目源时 我想将列表框滚动条移动到底部 但是ScrollIntoView 如果我向它传递对新添加项目的引用或其索引 它似乎不会执行任何操作 有没有人让它工作 或者对如何将列表框向下滚动到底部有任何其他建议 一些代码 voi
  • 将 RoutedEvent 转换为 WPF 中 MVVM 模式的命令

    如何将 Checkbox checked 路由事件转换为 MVVM 模式的命令 参考 考虑按钮单击路由事件 当我们为按钮分配命令时 button click 事件被视为命令 它执行相应的命令 我用谷歌搜索了它 我得到了 EventBehav
  • wpf工具包折线图,无点且具有不同的线条颜色

    我有一些图表 我想动态添加没有数据点的 LineSeries 只是带有一些自定义颜色的线条 我发现隐藏数据点的唯一方法是 Style style new Style typeof LineDataPoint style Setters Ad
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 现代 UI WPF 导航

    我正在使用现代 ui wpf 并尝试从 CheckLogin xaml 页面导航到 MainWindow xaml 页面 它们位于解决方案根目录中 我在 CheckLogin xaml 中写了这样的内容 BBCodeBlock bbBloc
  • 获取 wpf WriteableBitmap 的 DrawingContext

    有没有办法获得DrawingContext 或类似的东西 WriteableBitmap IE 让你调用简单的东西DrawLine DrawRectangle etc 种方法 而不是直接操作原始像素 我发现 Sixlettervariabl

随机推荐

  • 在 Junit-4.11 中找不到类

    我在 Mac 上配置了 Junit 4 11 编译为javac没有错误 但是当我运行时java I got Could not find class HelloWorldTest 这是我的HelloWorld java and HelloW
  • 如果从外部 svg-sprite 文件使用,则 svg 中的遮罩标记将被忽略

    我正在尝试在我的项目中使用 svg sprite 并且效果很好 除非您使用的是mask精灵中的标签 公共 精灵 svg
  • 如何在 Visual C++ 下编译 WinCrypt.h?

    我有一个沼泽标准的 Visual Studio Express Visual C 环境 安装在沼泽标准的 Windows 7 机器上 我想简单地编译 include WinCrypt h 来自 Windows SDK 而不会出现错误 有人可
  • JS通过变量调用对象属性

    当我有一个对象并且我想引用其中的属性时 我可以使用例如 objectName propertyName 当我有一个 子属性 时我可以使用 objectName propertyName propertyName 但是如何使用这种语法的变量呢
  • 将操作按钮添加到一个片段的操作栏

    我的应用程序有三个选项卡 我使用寻呼机在选项卡之间切换 每个选项卡都有自己的片段 我使用 OptionsMenu 方法将 设置 和 帮助 操作按钮添加到主活动的操作栏中 我现在想向操作栏添加一个新的操作按钮 但仅适用于第一个选项卡和第一个片
  • asp.net core 3.0 - 如何增加空闲超时

    这是使用 asp net core 3 0 的网站 我用CookieAuthentication并设置cookie过期时间如下 services AddAuthentication CookieAuthenticationDefaults
  • Selenium 中是否可以通过部分 id 匹配来定位元素

    我正在尝试使用生成的 id 来查找元素 其中 ID 的某些部分是已知的 例如 id page x002e x0023 default create firstname 其中最后 3 个单词 default create firstname
  • Jqgrid 以 inlineNav 样式添加新的空白行

    我想创建Add Edit Save And Delete我的 JqGrid 下方的按钮
  • 使用Angularjs的$http时读取响应头

    我在用 http进行 api 调用 发送一些自定义标头 例如X Foo 但是我还不知道如何阅读它们 在 的里面 http success function data status headers config 功能 headers是一个应该
  • 使用 Zxing 的 Android 条码扫描器

    我想将Zxing集成到android项目中 我是初学者 我已经看到这里描述的方式http bit ly nBszrL不鼓励 最好的方法是通过意图 如这篇文章所述http bit ly o29Uma PS 我不想要扫码机安装在我的设备上 我已
  • Ruby 中的三重单引号与三重双引号

    为什么你可能会使用 代替 as in 艰难地学习 Ruby 第 10 章学习练习 Ruby 中没有三引号 Two String并置的文字被解析为单个文字String文字 所以 Hello World gt HelloWorld 是相同的 H
  • R 中的轴标签:p(Y=y | theta = some)

    我已经搜索遍了 但找不到具有条件符号的代码 如 p a b 我使用的代码 通用 R 代码 而不是 ggplot 是 ylab bquote Pr Y y theta mytheta n n 这给了我一个标签 Pr Y y 0 2 n 10
  • 安装Anaconda后无法安装Python模块

    新注意 我无法通过 binstar 或 anaconda 安装 为什么我不能在 anaconda 之外的 python 中安装 当我不通过连续启动器专门 lunch 时 有没有办法让我的计算机停止使用 python 的 anaconda 安
  • SQL:ORDER BY 两列混合,不基于优先级

    我正在使用 mySQL 我必须按姓氏对联系人姓名进行排序 但如果没有姓氏 我会按名字排序 这看起来像 ORDER BY lastname lastname firstname 然而 这使得带有姓氏的出现在顶部 我想要的行为是将名字和姓氏混合
  • 示例函数中的替换是什么意思? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 当我尝试从数据框中随机选择每组中的 10 个样本时 我试图弄清楚样本函数的工作原理 我有一个 5 列和 7000 行的数据框 我将数据集分成大约 200 个组 然后我想从每组
  • 在 UIButton 的选择器上传递参数

    我有一个detailDisclousurea 的标注上的按钮MKAnnotation 当按下此按钮时 我需要调用一个传递标识参数的方法annotation那叫它 怎么可能呢 这是我的注释视图 MKAnnotationView mapView
  • 如何使用 Git 恢复

    How is git revert used 这可能听起来像是一个重复的问题 但当人们问这个问题时 答案通常是 使用git reset as per 恢复到 Git 中 SHA 哈希的提交 然后当有人问如何使用时git reset人们回复说
  • 车把和异步调用

    我使用这个助手来检查图像是否存在 Handlebars registerHelper checkLogo function url UrlExists url function status if status 200 return new
  • Delphi w Indy 10:无法通过 Web 服务器上的 SSL“最佳实践”通过 TLS 1.2 连接

    问题 我们如何让 Indy 10 与强制执行最新 TLS 1 2 SSL 最佳实践的 Web 服务器配合使用 Microsoft 记录了最佳实践 https technet microsoft com library security ms
  • AvalonDock 现在失去 Alt 键装饰

    I ve been using AvalonDock 2 0 for some time now being key for managing documents in an IDE In the last month or so I ve