繁体   English   中英

如何在另一个类的wpf用户控件(something.xaml.cs)中运行方法?

[英]How run a method inside a wpf user control (something.xaml.cs) from another class?

假设您有一个用户控件,其中有一种方法可以重置表格:

public void myReset()
{
   text1.Text="";
   text2.Text="";
}

现在我想从clsMyClass中的方法调用此myReset()方法

    class clsMyclass
    {

        public clsMyClass()
        {
        }
        // ==================== Methods  =================
        public double SomeMethod(double Val)
        {
            UserControlRef.myReset();
            //Do things...
        }
   }

我不知道如何创建对用户控件的引用。 我已经看到使用Revit Extension的代码以这种方式工作。 我已经进行了很多搜索来找出答案,但是我找不到正确的方法。

您应该能够在xaml中设置x:Name属性: x:Name="control"这将为您的实例提供一个变量名。 然后,在代码中,您可以将实例称为您为其指定的名称。 例如control.myReset();

根据@StijnvanGaal的说法,它不是一个非常好的方法,无论如何,您都可以检索任何UserControl及其内容。这里有一个示例,您的用户控件位于grid2中,您可以通过这种方式访问​​它。

 int ChildNumber = VisualTreeHelper.GetChildrenCount(grid2);
            for (int i = 0; i < ChildNumber; i++)
            {
                Control v = (Control)VisualTreeHelper.GetChild(grid2, i);

                if (v.GetType().ToString() == "Project_wpf.UserControlRef")
                {
                    UserControlRef CM = v as UserControlRef;
                    Console.WriteLine(CM.Name); //you can check his name here
                    CM.myReset();

                }
            }

基本上,这将在Grid2的子级的所有“ Project_wpf.UserControlRef”类型的UserControle中激活MyReset()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM