如何获取WPF中任何控件的“内容”?

时间:2012-05-22 08:22:07

标签: c# wpf wpf-controls

我正在编写一个函数,它将Control Ctrl作为Arguement并修改Control.Content。 有没有办法获取和设置任何Content的<{1}}

代码:

Control

3 个答案:

答案 0 :(得分:2)

您可以将方法的签名更改为:

void RemoveHotKey(ContentControl Ctrl, int KeyIndex)

ContentControl始终具有Content属性。

答案 1 :(得分:2)

试试这个:

void RemoveHotKey(ContentControl Ctrl, int KeyIndex) 
{ 
    if (Ctrl.Content.ToString().Substring(KeyIndex, 1) == "_")
    { 
        Ctrl.Content = Ctrl.Content.ToString().Remove(KeyIndex, 1);
    } 
}

看看here

或者这个:

void RemoveHotKey(Control Ctrl, int KeyIndex)
{
    ContentControl contentCtrl = Ctrl as ContentControl;
    if (contentCtrl != null && contentCtrl.Content != null)
    {
        if (contentCtrl.Content.ToString().Substring(KeyIndex, 1) == "_")
        { 
            contentCtrl.Content = contentCtrl.Content.ToString().Remove(KeyIndex, 1);
        }
    } 
}

这比使用反射便宜..

答案 2 :(得分:1)

您可以使用反射来检查 Control 是否实际上具有 Content 属性...

Type t = Ctrl.GetType();
PropertyInfo p = t.GetProperty("Content");
if (p != null)
{
    string val = p.GetValue(Ctrl, null) ?? "";
    val = val.Replace("_", "");
    p.SetValue(Ctrl, val, null);
}