私は問題を解決するためにさまざまな方法で試してみましたが、役に立たなかったので、ここの誰かが助けてくれることを願っています。タイプコンバータからのバインディングへのアクセス?
私は、タイプ変換を使用して値を文字列からカスタムデータ型(例:MyCustomType
)に変換する双方向バインディングを持つテキストボックス要素を持っています。これはうまくいきますが、私のプロジェクトの要件が変更されたため、変換が行われる前に余分な処理を行う必要があります。
しかし、この余分な処理を実行するには、「ソース」テキストボックスまたはバインディングコンテキストにアクセスできる必要があります。どちらも私はアクセスすることができませんでした。
タイプコンバータのConvertFrom()
メソッドからソーステキストボックスにアクセスする方法はありますか?
私はITypeDescriptorContext
パラメータを(WPFによって)ConvertFrom()
メソッドに渡しましたが、ほとんどのプロパティはnullです。私もMultiValueConverter
を使用して、完全に型コンバータを避け、しかし、これは余分なコードのLOTにつながった、と試してみました
public class MyCustomTypeConverter : TypeConverter
{
...
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
// Context is
return new MyCustomType(value);
}
...
}
すなわち
本当に助けにはなりませんでした。私はタイプ変換がはるかにエレガントなので、このルートを避けることを好むだろう。
ご迷惑をおかけして申し訳ございません。 :)
は、なぜあなたはバインディングアクセスしたいん:このテキストボックスのバインディングにアクセスするには、単に、その後
TextBox
としてsourceTextBox
をキャストすることができますか?他の方法があるかもしれません – Nitin私はTypeConvertersからBindingsにアクセスすることはできません。彼らはDataLayerで動作している必要があります、また、不必要な作業がたくさんあるようです。あなたが問題を更新すれば、何が全体の問題であるのか、人々はそう簡単に手助けすることができます。 –
@Nitin、私はソースTextBoxにアクセスしようとしていたので、別のメソッド(参照)に渡すことができ、検証の失敗に対して特定のタスクを実行できます。 これは必ずしもこれを実行する最善の方法ではありませんが、プロジェクトの要件は開発段階でかなり遅れて変更されていますが、これは機能的な、やや一時的な解決策です。 (時間がたつと、私のリファクタリングのリストにはかなり高い)。 ご回答いただきありがとうございます。 – XtraSimplicity