控件.WPF中的文本

本文关键字:文本 WPF 控件 | 更新日期: 2023-09-27 18:20:39

当前我正在将我的一个程序从WinForms转换为WPF。我遇到的第一个问题涉及在WPF中设置控件的文本值。在我的WinForms程序中,我有如下的工作代码:

delegate void SetTextCallback(Control c, string text);
private void SetText(Control c, string text)
{
    if (c.InvokeRequired)
    {
        SetTextCallback d = new SetTextCallback(SetText);
        this.Invoke(d, new object[] {c, text});
    }
    else
    {
        c.Text = text; //This is where I have not found a way to replicate.
    }
}

我已经改变了一些事情来让部分工作,但到目前为止,这是我在WPF中所做的,除了我实际上试图设置控件文本的部分之外,它似乎是工作的。

delegate void SetTextCallback(Control c, string text);
private void SetText(Control c, string text)
{
    if (c.Dispatcher.CheckAccess())
    {
        SetTextCallback d = new SetTextCallback(SetText);
        this.Dispatcher.Invoke(d, new object[] {c, text});
    }
    else
    {
        c.Text = text;
    }
}

根据我在阅读本网站和MSDN部分后发现的情况,如果控件是一个WPF文本框,我可以调用c.Text命令;如果控件是WPF标签,则可以调用c.Content命令。然而,我不能像这里那样为泛型控件c调用这两个。有没有任何方法或命令可以用来设置控件c的Text值,或者有没有其他方法可以修改代码,这样我仍然可以设置SetText函数,允许我以相同的方式编辑任何控件(文本框、标签等)的文本?

控件.WPF中的文本

WPF中有多种不同的内容模型。MSDN对它们有很好的入门知识。

话虽如此,你可以用DependencyProperty做一件很酷的事情,就是把它设置在一个可能不关心它的DependencyObject

c.SetValue(TextBlock.TextProperty, text);
c.SetValue(ContentControl.ContentProperty, text);

这将涵盖大多数显示内容的控件。