我的安装程序中有一个非标准功能,它不包含任何可安装的文件,而是触发自定义操作。由于此功能不包含任何官方文件组件,因此安装程序显示 0 作为此功能所需的磁盘空间。如何在 WiX 中手动设置功能的成本?
我正在开发一个从Control派生的自定义控件,并使用ControlTemplate定义.在删除所有铃声和口哨声后,控件只显示四个TextBoxes:
<Style TargetType="{x:Type local:MyControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyControl}">
<StackPanel Orientation="Horizontal">
<TextBox/>
<TextBox/>
<TextBox/>
<TextBox/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
问题是控件能够接收键盘焦点并在自身周围绘制焦点矩形(不是其中一个TextBox,而是围绕所有TextBox).在浏览窗口中的控件时,这会添加不必要的制表位.
在自定义控件上设置Focusible为false(使用样式中的setter)可以解决问题,但是这样的解决方案远非完美,因为使用该控件的开发人员可以将Focusible设置为true,这会破坏制表符停止行为.
我可以响应控件的GotKeyboardFocus事件,并在整个控件获得焦点时将焦点放在第一个TextBox上,但是当返回标签时(使用Shift + Tab),这将无法正常工作,第一个TextBox将获得焦点,而在这种情况下应该首先关注最后一个TextBox.
如何防止整个自定义控件接受键盘焦点,但允许子TextBox正常作为制表位停止?