首页 > 解决方案 > 在 UserControl 按钮单击事件中从父窗口调用 public void 方法

问题描述

我的 MainWindow 导航菜单中有一个label,内容绑定到 SQL 命令,该方法被调用public void HBD_Count()

我有各种我想调用UserControls的地方,以便可以刷新我的值。Button_Clickpublic void HBD_Count()label

我尝试public partial class从我的 MainWindow 调用我的UserControl页面,但它不起作用。

这是我在主窗口中的代码,它填充了label

    public partial class MainWindow : Window
{

    public MainWindow()
    {
        InitializeComponent();
        Loaded += MyWindow_Loaded;
        HBD_Count();
    }


        public void HBD_Count()
    {
        try
        {
            SqlConnection connection = new SqlConnection("Data Source=WINDOWS-B1AT5HC\\SQLEXPRESS;Initial Catalog=CustomerRelations;Integrated Security=True;");

            string selectQuery = ("SELECT COUNT(*) AS HBDCount FROM hb_Disputes WHERE (ASSGNTO = 'E099255') AND (STATUS = 3)");
            connection.Open();
            SqlCommand command = new SqlCommand(selectQuery, connection);

            SqlDataReader sqlReader = command.ExecuteReader();

            while (sqlReader.Read())
            {
                HBD_Counts.Content = sqlReader["HBDCount"].ToString();
            }
            connection.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

    }

这是我UserControl页面中的代码:

    public partial class Import_HighBill : UserControl
{
    public string ValueString { get; set; }
    public partial class MainWindow : Window { }

    public Import_HighBill()
    {
        InitializeComponent();
        AssignList();
    }
        private void butn_Assign_Click(object sender, RoutedEventArgs e)
    {
            SqlConnection con = new SqlConnection("Data Source=WINDOWS-B1AT5HC\\SQLEXPRESS;Initial Catalog=CustomerRelations;Integrated Security=True;");

            try
            {
                SqlCommand cmd = new SqlCommand("UPDATE [hb_Disputes] SET ASSGNTO=@ASSGNTO WHERE DSP_ID=@DSP_ID", con);
                cmd.Parameters.AddWithValue("@DSP_ID", txt_ID.Text);
                // cmd.Parameters.AddWithValue("@DATERSLVD", DBNull.Value);


                //  Analyst Name
                if (cmb_AnalystName.SelectedValue == null)
                {
                    cmd.Parameters.AddWithValue("@ASSGNTO", DBNull.Value);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@ASSGNTO", cmb_AnalystName.SelectedValue);
                }

                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();



            // Here is where I am trying to call the method
               HBD_Count();




                // Clear Search Fields
                cmb_AnalystName.SelectedIndex = -1;
                MessageBox.Show("Dispute Assinged!!!");
                AssignList();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

    }

标签: c#wpfmethodsparent-child

解决方案


您可以使用以下代码来完成此任务:

Window parentWindow = Window.GetWindow(this);
((MainWindow)parentWindow).HBD_Count();

如果您需要调用不同的各种方法,MVVM 概念可以简化任务。在这种情况下,您需要在Command中包含方法调用,并且能够使用RelativeSource 绑定来访问它。


推荐阅读