添付プロパティがあります(たとえば、TextBox内のテキストを大文字にします)。明らかに、テキストが更新されるたびに大文字にするために、TextBoxのTextChangedイベントをサブスクライブする必要があります。
public class Capitalize
{
// this is for enabling/disabling capitalization
public static readonly DependencyProperty EnabledProperty;
private static void OnEnabledChanged(
DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
var tb = d as TextBox;
if ((bool)e.NewValue)
{
tb.TextChanged += new TextChangedEventHandler(tb_TextChanged);
}
else
{
tb.TextChanged -= new TextChangedEventHandler(tb_TextChanged);
}
}
}
ご覧のとおり、TextBoxにイベントハンドラーを追加します。これは(私が正しく理解していれば)強力な参照を作成します。これは、その強力な参照のために、GCがTextBoxを収集できないことも意味しますか?はいの場合-TextBoxを収集できるように、どの時点でイベントの配線を解除する必要がありますか?