如果要单击一个按钮,并且该按钮位于另一个窗口中,我想打开一个窗口。 那么如何检查另一个窗口中的按钮是否被单击?
现在,我正在使用名为“ 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()。
答案 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()调用窗口。