基本的なことかもしれませんが、最近初めて気付きました。 例えば、ある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使ってない? まぁいいや。

