1
我有一個附加屬性(例如,它在TextBox內部大寫文本)。 Obvoiusly我必須訂閱TextBox的TextChanged事件才能在每次更新文本時使其大寫。WPF中的附加屬性和事件接線
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到大寫),所以沒有收集文本框本身的問題。 – Jefim 2011-01-25 11:19:40