我对 WPF 还是很陌生,我花了一周的时间试图理解 MVVM,但运气并不好,但我并没有特别想遵循这些规则,我只需要将信息存储到一个类中,以便我的所有用户控制可以访问它,也可以更改它。这是我到目前为止所拥有的:
namespace WpfApplication2.Funtions
{
public class Binder : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
private string _Test_String;
public string Test_String
{
get { return _Test_String; }
set { _Test_String = value; OnPropertyChanged("Test_String"); }
}
}
}
用户控制:
public partial class UserControl1 : UserControl
{
//Funtions.Binder _B = new Funtions.Binder();
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
MainWindow MW = new MainWindow();
textBox1.Text = MW._B.Test_String;
}
}
主窗口:
public partial class MainWindow : Window
{
public Funtions.Binder _B = new Funtions.Binder();
public MainWindow()
{
InitializeComponent();
_B.Test_String = "HELLO";
}
private void button1_Click(object sender, RoutedEventArgs e)
{
_B.Test_String = "Hello from main";
}
}
我看到这里发生了什么,用户控件正在创建 MainWindow 的一个新实例,因此它的值不同,但是我如何实际访问 MainWindow 从 usercontrol1 创建的同一个 Binder 实例,以便它可以读取和更改它?或者如果我不能以这种方式实现我想要的,我应该怎么做?我知道必须有一个非常简单的解决方案。我不想使用项目设置。
请不要介意超级菜鸟的问题,但我已经被困了好几天了,我只需要一个简单的解释和解决方案,我就会继续前进。谢谢你。