単純な依存関係プロパティプロキシを作成しようとしています。私はカスタムコントロールを作った、それはテキストボックス(名前:"TextBox_FilePath"
)と開いているファイルのダイアログを示すボタンから作られているファイルピッカーです。依存関係プロパティのプロキシを作成する
私は再利用可能なコントロールを作っているので、"SelectedFilePath"
プロパティを持っているといいと思います。 Text
プロパティは"SelectedFilePath"
プロパティであることが私のコントロールには完璧であると思われるので、これらの依存関係プロパティをプロキシしたいと思います。
私が作った最初のアプローチは:
public static readonly DependencyProperty SelectedFilePathProperty = TextBox.TextProperty;
public string SelectedFilePath
{
get { return (string) this.TextBox_FilePath.GetValue(SelectedFilePathProperty); }
set { this.TextBox_FilePath.SetValue(SelectedFilePathProperty, value); }
}
働いたが、そのプロパティにバインドしようとしたときに、例外をthrowedいます。それから、私は外に出ました:
public static readonly DependencyProperty SelectedFilePathProperty =
DependencyProperty.Register("SelectedFilePath", typeof (string), typeof (FilePicker), new PropertyMetadata(default(string)));
public string SelectedFilePath
{
get { return (string) this.TextBox_FilePath.GetValue(SelectedFilePathProperty); }
set { this.TextBox_FilePath.SetValue(SelectedFilePathProperty, value); }
}
これはうまくいきますが、私はなぜ分かりませんか?どこで指定しましたか?テキストボックスのtext
プロパティが必要でしたか?
この依存関係プロパティをプロキシするだけで何が失われますか?
EDIT:AddOwner
と ソリューションは、あまりにも動作しません、それは「結合のみ依存関係プロパティに適用することができます」と言ってExcetionをスローします。コード:
public static readonly DependencyProperty SelectedFilePathProperty =
TextBox.TextProperty.AddOwner(typeof(FilePicker));
public string SelectedFilePath
{
get { return (string)this.TextBox_FilePath.GetValue(SelectedFilePathProperty); }
set { this.TextBox_FilePath.SetValue(SelectedFilePathProperty, value); }
}
わかりません。
EDIT2: 他のみんなが答えを理解する問題を持つためのプロパティが別での参照を追加し、唯一TextBox
ためが登録されているので、私は最初のアプローチは動作しませんa little graphic
私の編集を参照してください:) – GameScripting
*私は*、それは名前「テキスト」に登録されています言ったように、あなたはそれ故にだけと呼ばれるプロパティにバインドすることができます'Text'、あなたが作成した' SelectedFilePath'プロパティは、あなたの命令コードの便宜のための単なるラッパーです。バインディングは決してそれを使用しません。別の名前が必要な場合は、自分のプロパティを登録してください。 –
あなたはとても親切で、例を挙げたり、それをどうやって参考にすることができますか? – GameScripting