基本的なことかもしれませんが、最近初めて気付きました。 例えば、あるBorderの高さのBindingを解除する場合、普通はこうします。
DependencyProperty prop = Border.HeightProperty; if (BindingOperations.IsDataBound(border, prop)) BindingOperations.ClearBinding(border, prop);
その代わりにこうしてもいいようです。
border.Height = border.ActualHeight;
まぁ「解除できる」というか、解除されてしまったせいでバグになってつまづいたんですけどね。 すぐに理由が分かってよかった。
ClearBindingしたときはプロパティの値がデフォルト値になってしまいます。 Bindingを解除した後もプロパティの値を継続する場合はちょっとだけコードが必要かと思ってました。
DependencyProperty prop = Border.HeightProperty; if (BindingOperations.IsDataBound(border, prop)) { var h = border.ActualHeight; BindingOperations.ClearBinding(border, prop); border.Height = h; }
それが不要でちょっとだけ得した気分。
一応、確認用の簡単なコードを載せておきます。 まずはMainWindow.xaml。
MainWindow.xaml.csです。
tの値をデバッガで見て、「ああ、Binding解除されてるねぇ。」と呟いてみたり...
アレ? DependencyPropertyの変数宣言にvar使ってない? まぁいいや。