提问人:Jean-David Lanz 提问时间:3/23/2023 更新时间:4/4/2023 访问量:67
WPF - ErrorTemplate 工具提示显示在边框上,但未显示 TextBox
WPF - ErrorTemplate tooltip showing on the Border but not one the TextBox
问:
我有 TextBox 控件,其绑定到整数属性。他们就像:
<TextBox x:Name="txtInteger"
Grid.Row="2"
Grid.Column="0"
Text="{Binding Path=IntegerValue}"
Validation.ErrorTemplate="{StaticResource ValidationForNumericValues}"/>
可以预见的是,验证错误模板:ValidationForNumericValues
<Window.Resources>
<ControlTemplate x:Key="ValidationForNumericValues">
<Grid>
<Border BorderThickness="1"
BorderBrush="Red">
<Border.ToolTip>
<ToolTip Placement="Right"
HorizontalOffset="5"
VerticalOffset="5"
Content="Please enter a number"/>
</Border.ToolTip>
<AdornedElementPlaceholder/>
</Border>
</Grid>
</ControlTemplate>
</Window.Resources>
当我在 中输入字母数字值时,红色边框会适当显示出来,但是当鼠标光标位于 .它仅在光标位于红色边框上方时显示。txtInteger
TextBox
这个答案表明可能与它有关,但删除声明并没有改善事情。DefaultBoxStyle
<Style.../>
我还尝试使用不同的控件,例如
<Window.Resources>
<ControlTemplate x:Key="ValidationForNumericValues">
<Grid>
<Border BorderThickness="1"
BorderBrush="Red">
<Border.ToolTip>
<ToolTip Placement="Right"
HorizontalOffset="5"
VerticalOffset="5"
Content="Please enter a number"/>
</ToolTip>
</Border.ToolTip>
<TextBlock Text=""
Opacity="100"
Foreground="Red"
HorizontalAlignment="Stretch">
<TextBlock.ToolTip>
<ToolTip Placement="Right"
HorizontalOffset="10"
VerticalOffset="10"
Content="Please enter a number"/>
</TextBlock.ToolTip>
</TextBlock>
</Border>
<AdornedElementPlaceholder/>
</Grid>
</ControlTemplate>
</Window.Resources>
这样一来,工具提示就会显示在 的整个表面上...但我无法通过单击它来设置焦点。我理解阻止它;我本来以为把它放在 之前会把它放在 下面,但我想因为它只是有条件地出现,所以它总是出现在上面。TextBox
TextBlock
AdornedElementPlaceholder
TextBox
(我也尝试过对 之前声明的 和 内部 做同样的事情,为了节省空间,我没有包括它,并且得到了相同的结果。TextBlock
Border
AdornedElementPlaceholder
Border
我试过了
<AdornedElementPlaceholder>
<AdornedElementPlaceholder.ToolTip>
<ToolTip Placement="Right"
HorizontalOffset="5"
VerticalOffset="5">
<TextBlock>Please enter a number</TextBlock>
</ToolTip>
</AdornedElementPlaceholder.ToolTip>
</AdornedElementPlaceholder>
但这似乎并不影响 的属性,只是 的属性。TextBox
ToolTip
AdornedElementPlaceholder
我试图绑定 的属性,但我不知道如何访问 的工具提示。TextBox
ToolTip
Border
Content
(如果相关,我在 Visual Studio 2019 下使用 .NET 5.0 项目。
我做错了什么?
答:
1赞
Connor
3/23/2023
#1
为您的边框提供透明背景。在命中测试时,需要背景(或内容)才能拾取边界以外的任何内容。
<Border BorderThickness="1"
BorderBrush="Red"
Background="Transparent">
评论
0赞
Jean-David Lanz
3/27/2023
像魅力一样工作,非常感谢!(太简单了,但我在其他例子中没有看到过。
评论