私はまだWPFに非常に慣れておらず、MVVMを理解するために1週間を費やしましたが、あまり運がありませんでしたが、特にこれらのルールに従おうとしているわけではありません。情報をクラスに保存するだけで、すべてのユーザーが制御できますアクセスして変更することもできます。これは私がこれまでに持っているものです:
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 インスタンスに実際にアクセスして、読み取りおよび変更できるようにするにはどうすればよいですか? または、この方法で欲しいものを達成できない場合、どのようにそれを行うべきですか? これには非常に簡単な解決策が必要であることはわかっています。プロジェクト設定を使用したくありません。
非常に初心者の質問を気にしないでください。しかし、私は何日も立ち往生しています。簡単な説明と解決策が必要なだけです。ありがとうございました。