単純な依存関係プロパティ プロキシを作成しようとしています。カスタム コントロールを作成しました。これはファイル ピッカーで、テキスト ボックス (name: "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); }
}
これは機能しましたが、そのプロパティにバインドしようとすると例外がスローされました。それから私は次のようになりました:
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
テキストボックスのプロパティが必要だとどこで指定しましたか?
その依存関係プロパティを単純にプロキシするために何が欠けていますか?
編集:
ソリューションも機能し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: 答えを理解するのに問題がある他のすべての人のために、私は少しグラフィックを作りました