バインドされたテキストボックスを更新するのが難しいです。私はまだWPFの開発には新しく、この時点でインターネット上で利用可能なほとんどすべてを読んだので基本的な概念が失われているに違いありません。私はまだ混乱しています。以下は私のコードです。まず、私の質問の文脈をよりよく設定するために私がやっていることの概要。テキストボックスへのデータバインディングとプロジェクト全体でのオブジェクトの共有
メインウィンドウは、フレームソースタグを使用してさまざまなページを読み込むタブを含むウィンドウです。これは、実際のオブジェクトが各タブでインスタンス化されている場所がわからないため、XAMLがロードされているだけなので、問題が発生する可能性があります。
Scratchpadはテキストボックスを含むクラスで、ステータスやエラーを報告するための操作を行うほぼすべてのクラスで使用されます。
テキストボックスXAML(これは文脈のために、 "ScratchPad_View.xaml" である)XAML
背後<TextBox x:Name="scratchMessage"
Text="{Binding Path=ScratchMessage, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
HorizontalAlignment="Right"
Height="300"
Width ="500"
TextWrapping="Wrap"
VerticalAlignment="Top"/>
コード
public partial class ScratchPad : Page
{
public ScratchPad()
{
InitializeComponent();
ScratchPad_Model ScratchPad_Model = new ScratchPad_Model();
this.DataContext = ScratchPad_Model;
}
}
モデルの実装
class ScratchPad_Model : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string _scratchMessage;
public string ScratchMessage;
{
get
{
return _scratchMessage;
}
set
{
if (value != _scratchMessage)
{
_scratchMessage = value;
OnPropertyChanged("ScratchMessage");
}
}
}
// Create the OnPropertyChanged method to raise the event
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
私は石畳いるこのの大半StackOverflowに関する他の質問への回答と多数のデータバインディングチュートリアルしかしそれはまだクリックしていません。私はテキストボックスの内容を更新する方法がわかりませんし、メインウィンドウのXAMLのテキストボックスを含むページを読み込んでいるため、正しいオブジェクトを参照しているかどうかわかりません。メインウインドウは、このページを下にコピーされたフレームタグに読み込みます。
<Frame Source="Common/View/ScratchPad_View.xaml" ></Frame>
このXAMLのコードは、次のとおりです。
public partial class MainWindow
{
// Create scratchpad object for logging and status display
ScratchPad scratchPad = new ScratchPad();
public MainWindow()
{
InitializeComponent();
}
private void StartVault(object sender, RoutedEventArgs e)
{
// Creates the authentication prompt view object and pass the scratchPad reference for reporting
authPrompt_View _authPrompt_View = new authPrompt_View(scratchPad);
}
}
私はしかし、私は結合を得ることに多くの幸運を持っていなかった、彼らはテキストボックスの内容を更新できるように、私はすべてのクラスにメインウィンドウの初期化中に作成されたScratchPadのオブジェクトへの参照を渡します働く一度それが動作すると、私はまだテキストボックスにテキストを追加するはずですが、私はまだよく分かりません。ここには多大な問題があるかもしれませんが、私は概念的な問題のいくつかを修正し、私が間違っていることをよりよく理解することを望んでいます。
これらの不要な説明段落を削除できますか? –