Вызов метода publi c void из родительского окна в событии нажатия кнопки UserControl - PullRequest
0 голосов
/ 08 мая 2020

У меня есть label в меню навигации MainWindow, и содержимое привязано к команде SQL, и этот метод называется public void HBD_Count()

У меня есть разные UserControls где на Button_Click Я хочу вызвать public 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);
            }

    }

1 Ответ

1 голос
/ 09 мая 2020

Вы можете использовать следующий код для выполнения sh этой задачи:

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

Концепция MVVM позволяет упростить задачу, если вам нужно вызвать различные различные методы. В этом случае вам нужно будет включить вызов метода внутри Command , и вы сможете получить к нему доступ, используя привязку RelativeSource .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...