我正在尝试向WPF事件处理程序发送额外的变量。
我尝试使用委托将其发送到另一个函数,该函数包含所需的变量,并且该函数有效。但是,它创建了变量的副本,并且我无法从委托函数中更改主类中的值。然后,我考虑过将函数移至类,并将所有变量存储在该类中,以便可以获取和设置它们。但是,因为它是一个类并且不继承主类,所以无法找到WPF / XAML对象。我曾尝试继承mainclass,但是因为我正在mainclass内部创建类,并且它有效地继承了自身,所以陷入了无法逃脱的循环。
public partial class MainWindow : Window
{
public class Program : MainWindow
{
public string Word { get; set; }
public void WhenPressed_1(object sender, RoutedEventArgs e)
{
lable_1.Content = Word;
}
}
public MainWindow()
{
InitializeComponent();
Program test = new Program();
Button_1.Click += delegate (object sender, RoutedEventArgs e) { test.WhenPressed_1(sender, e); };
}
}
它位于Program test = new Program();行中。坏了
我知道这段代码是一团糟,不是应该这样做,但是我还没有找到在WPF事件处理程序中发送和更改变量的可行解决方案。如果除了这种遥远的方法之外还有其他解决方案,那么如果我要问的事情无法实现,那就欢迎说。
谢谢(抱歉这个罗word的问题)
答案 0 :(得分:1)
您可以将MainWindow对象传递给程序类并更改所需的值
public partial class MainWindow : Window, ICommon
{
public MainWindow()
{
InitializeComponent();
Program test = new Program();
thisButton.Click += delegate(object sender, RoutedEventArgs e) { test.WhenPressed_1(this); };
}
public void SetValueInMain()
{
// Set Main values
}
public class Program
{
public string Word { get; set; }
public void WhenPressed_1(ICommon mainWind)
{
mainWind.SetValueInMain();
}
}
}
public interface ICommon
{
void SetValueInMain();
}