检查是否单击了另一个窗口中的按钮

时间:2018-09-10 05:06:39

标签: c# wpf

如果要单击一个按钮,并且该按钮位于另一个窗口中,我想打开一个窗口。 那么如何检查另一个窗口中的按钮是否被单击?

现在,我正在使用名为“ RightButton.cs”的类进行编码 单击“原因”窗口中的“添加”按钮时,我想打开一个名为“ PopUp”的窗口。

PaidOutReason paid = new PaidOutReason(trnprt, apiParameters); 

paid.ShowDialog(); 

if (paid.btnSave.ClickMode == new ClickMode()) 
{ 
    PopUpBanks popu = new PopUpBanks(this); 
    popu.Show(); 
}

这是一个完美的工作,但我必须删除ShowDialog()并将其替换为Show()。然后它不起作用。

这是用于POS系统的。它具有一个称为“键盘”的用户控件。当“原因”窗口打开时,此键盘也要打开。因此,我不得不用Show()替换ShowDialog()。

4 个答案:

答案 0 :(得分:1)

您可以在应用程序中使用静态控件。首先在App.xaml.cs中声明静态窗口对象,例如

public static PaidOutReason paidOutWindow;

然后,在App构造函数方法中,在 InitializingComponent()之后,初始化静态窗口类:

paidOutWindow = new PaidOutReason();

您可能想知道它能为您带来什么。由于它是POS应用程序,因此您可能会经常重复使用同一组窗口,这意味着您可以将窗口对象保存在内存中并对其进行引用(并在需要时进行更改)。此外,完成此操作后,您可以通过输入

来访问 PaidOutReason 对象内的所有结构
App.paidOutWindow.FunctionName();

最后,您应该有权访问所有窗口功能,例如 ShowDialog()

答案 1 :(得分:1)

如果使用的是MVVM模式,则可以使用命令绑定来显示PopupBanks窗口。 例如:

public class ViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public ICommand AddCommand { get; set; }

        public ViewModel()
        {
            AddCommand = new RelayCommand(AddCommandHandler);

        }

        private void AddCommandHandler()
        {
            IPopUpBanks popu = new PopUpBanks(this);
            popu.Show();
        }
    }

PaidOutReason 视图: 1. <Button x:Name="Add" Command={Binding AddCommand}/> 2.将上述视图模型设置为PaidOutReason视图的数据上下文。

创建一个包含Show()方法的接口IPopUpBanks并在 PopUpBanks 视图上实现此接口。

答案 2 :(得分:1)

处理Click的{​​{1}}事件:

btnSave

答案 3 :(得分:0)

我使它成为用户控件,而不是键盘窗口,然后在其中初始化一个事件。然后,我将该键盘用户控件插入PaidOutReason窗口,然后调用该事件。然后,我可以使用ShowDialog()调用窗口。