【问题标题】:How can I change textbox contents based on which control the mouse is hovering over in WPF?如何根据鼠标在 WPF 中悬停的控件更改文本框内容?
【发布时间】:2015-10-19 14:30:07
【问题描述】:

我有一个文本框和几个自定义控件。每个自定义控件都有一个“提示文本”属性,当将鼠标悬停在该控件上时,该属性应显示在文本框中。

在 winforms 中,我可以只给自定义控件一个文本框属性并通过事件更改其文本属性,但是在 WPF 中,当我给它一个属性时,它会创建一个新的文本框。

那么我怎样才能得到想要的功能呢?

【问题讨论】:

  • 查看样式和触发器。我几乎 100% 确信您可以完全在 XAML 中执行此操作。另外,你试过什么?你的示例代码在哪里?欢迎来到堆栈溢出。请发布可以解决的问题。不是理论
  • string 类型的属性放入所有相关控件的数据上下文中。在属性MouseOver 的触发器中将该属性设置为提示文本。
  • @AnthonyRussell 我不确定我是否可以在 cmets 中获得元数据,但为了将来提出更好的问题,我想澄清一下。在这种情况下,哪些示例代码会有所帮助?我问了怎么做,这是否因为有多种解决方案而被认为无法解决?
  • @Sand 你说“在 WPF 中,当我给它一个属性时,它会创建一个新的文本框”。为什么不发布代码 - 你已经尝试过一些东西,它对我们很有用,即使你认为这是错误的方法。
  • @Sand 将 Stack Overflow 视为同行评审网站,而不是问答网站。专业人士使用本网站来解决难题。我们发布我们尝试过的内容以及相关代码。然后,我们整个社区的同行就能够提出更好的处理方法或指出代码中的错误。

标签: wpf


【解决方案1】:

假设您的自定义控件都继承自一个通用的基本类型(我以 CustomControl 为例)...

XAML:

<TextBox x:Name=TextBox/>

<Button VerticalAlignment="Bottom" Click="ButtonBase_OnClick" MouseEnter="UIElement_OnMouseEnter" MouseLeave="UIElement_OnMouseLeave">test</Button>

后面的代码:

private void UIElement_OnMouseEnter(object sender, MouseEventArgs e)
{
    TextBox.Text = ((CustomControl) sender).HintText;
}

private void UIElement_OnMouseLeave(object sender, MouseEventArgs e)
{
    TextBox.Text = string.Empty;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 2023-04-07
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多