【问题标题】:Resetting control tooltip to "default" set tooltip将控件工具提示重置为“默认”设置工具提示
【发布时间】:2020-09-10 09:16:24
【问题描述】:

我有一个表单,其中包含多个需要用户填写的文本字段。 每个文本字段都有一个工具提示,以帮助用户提供文本字段的预期值示例。

<!-- Handle xaml-->
<Label x:Name="lbmyHandle" Content="Handle:" HorizontalAlignment="Left" Margin="69,80,0,0" VerticalAlignment="Top"/>
<TextBox x:Name="txtmyHandle" HorizontalAlignment="Left" Height="23" Margin="123,84,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="120" ToolTip="Example: [Machine brand].[Machine model].[Machine s/n]"/>

用户单击按钮后,我会验证每个文本字段以检查是否已填写任何内容以及所填写的内容是否与预期值匹配。如果不是这种情况,我会设置文本字段的工具提示以指示用户必须更改文本字段的值。

现在的问题是,当用户在编辑指示为错误的值后再次单击按钮时,我想将文本字段的工具提示重置回“默认”工具提示(如果它们已被更正)。表示在 XAML 中设置的工具提示。该值是否存储在某处,或者我是否需要手动存储,如果是,存储这些值的最佳做法是什么。

【问题讨论】:

  • 您正在执行 validation (related) 并在 WPF 中使用 adorner 层显示验证错误。在这一层中,您可以有一个带有工具提示的漂亮错误指示器(图标、红色边框等),但请不要更改控件本身的工具提示。
  • 谢谢@Sinatr,如果您愿意,可以在答案中输入您的评论,我会接受。
  • 我的评论只是一个提示。随意将它变成一个好的self-answer 供未来的读者使用。

标签: c# wpf xaml


【解决方案1】:

一种方法是将默认工具提示文本声明为资源中的字符串,然后您可以使用以下内容进行设置:

... ToolTip="{StaticResources defaultTooltipTextKey}" ...

或者类似地,您可以在 C# 类中设置文本并像这样访问它:

... ToolTip="{x:Static LocalNamespace:ToolTips.ToolTip1}" ...

类的样子:

LocalNamespace
{
   public static class ToolTips
   {
        public static string ToolTip1 { get; } = "Example: [Machine brand]...";
   }
}

使用任何一种方法,您都可以稍后再参考原始字符串。第二个在 C# 代码中会更容易实现。

【讨论】:

    【解决方案2】:

    这个值是否存储在某个地方,或者我是否需要手动存储,如果是,存储这些值的最佳做法是什么

    这样设置时,它只存储在名为“txtmyHandle”的TextBoxToolTip 属性中:

    <TextBox x:Name="txtmyHandle" ... ToolTip="Example: [Machine brand].[Machine model].[Machine s/n]"/>
    

    如果您稍后将此属性设置为另一个值,则原始字符串值将消失,除非您将其存储在某处。

    例如,您可以在将属性设置为代码中的另一个值之前执行此操作,例如:

    string orginalToolTipValue = txtmyHandle.ToolTip?.ToString();
    txtmyHandle.ToolTip = "something else..";
    

    orginalToolTipValue 可能是您班级的一个字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      相关资源
      最近更新 更多