各フィールドが通常の方法で個別に生成されるクラスで作成されるフィールドでアプリケーションを動作させました
public class RequestProfileObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string strPassword;
public string Pwd
{
get { return strPassword; }
set
{
strPassword = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged("Pwd");
}
}
//Plus other code to load the data into the field and the OnPropertyChanged
//method
}
その後、変更を追跡できるようにする必要があることがわかり、そのためのメカニズムと必要なその他の機能を考え出しました。言うまでもなく、これらのオブジェクトのクラスを作成するという素晴らしいアイデアを思いついたコードの繰り返し。
public class ETLBaseField : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string strFieldPrime;
private string strField;
private string strFieldName;
public ETLBaseField() { }
public ETLBaseField(string strInputField)
{
strFieldName = strInputField;
}
public string Field
{
get { return strField; }
set
{
if (strField != value)
{
strField = value;
// Call OnPropertyChanged whenever the property is updated
OnPropertyChanged(strFieldName);
}
}
}
public void Load(string strValue)
{
strFieldPrime = strValue;
strField = strFieldPrime;
}
public void Empty()
{
Load("");
}
public bool isDirty()
{
return strFieldPrime != Field;
}
protected void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
このクラスは私のメインクラスで使用されています
public class RequestProfileObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ETLBaseField RequestName = new ETLBaseField("RequestName");
public ETLBaseField InterfaceName = new ETLBaseField("InterfaceName");
//Plus code that loads the ETLBaseField things and the OnPropertyChanged method
}
私の xaml コードは機能していましたが、フィールドへのバインディングはかなり面倒でした。私の新しい発明では、RequestName.Field プロパティを xaml テキストボックスにバインドする方法がわかりません。以下
<TextBox Height="23" Name="txtBxInterfaceName" Width="250"
Text="{Binding Path=InterfaceName.Field}" />
動作しません。ETLBaseField クラスを作成するのに、私は頭が良すぎたのでしょうか? RequestProfileObject から INPC を削除する必要がありますか?