我有一个绑定到整数属性的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
中时,我看不到工具提示。只有当光标位于红色边框上方时,它才会显示。
This answer表明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
的整个表面上......但我不能通过点击它来设置焦点。我本以为将它放在AdornedElementPlaceholder
之前会将它放在TextBox
之下,但我猜因为它只有条件地出现,所以它总是出现在上面。
(我还对在Border
之前声明的TextBlock
和在Border
内部声明的AdornedElementPlaceholder
做了同样的尝试,为了保存空间,我没有包含它们,结果也是一样的。)
我试过了
<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
。
(In如果相关,我在Visual Studio 2019下使用.NET 5.0项目。
我做错了什么?
1条答案
按热度按时间ao218c7q1#
给予你的边框一个透明的背景。当点击测试时,除了边框线之外的任何东西都需要一个背景(或内容)。