6
プロパティの既定のバインディングモードをプログラムで調べる必要があります。依存関係プロパティのデフォルトバインディングモードを取得するにはどうすればよいですか?
例えば、私がTextBox.TextProperty
と照合した場合、それはBindingMode.TwoWay
でなければなりませんが、それがItemsControl.ItemsSourceProperty
なら、それはBindingMode.OneWay
でなければなりません。
私は、カスタムMarkupExtensionを実施し、これまでの私のコードでここまで得ている:
public override object ProvideValue(IServiceProvider provider)
{
var service = provider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
if (service != null)
{
var target = service.TargetObject as DependencyObject;
var property = service.TargetProperty as DependencyProperty;
// Not sure what to do with the target and propery here...
}
}
私はこの答えでDependencyPropertyには、デフォルトでBindingMode.OneTime' 'に設定する方法がないことを推測していますか?それはTwoWayかどうかですか? – michael
@michael:フレームワーク固有のプロパティの場合は、yesです。 'OneTime'と' OneWayToSource' AFAIKは、プレーンな.NETプロパティを持つデータバインディングをよりよくサポートするためにのみ存在します。 – Jon