In AutoCompleteManager.cs there is a line that check whether the resource is load or not:
if (Application.Current.Resources.FindName("AcTb_ListBoxStyle") == null)
This is wrong. ResourceDictionary's FindName method will always returns null, so whenever we create a AutoCompleteManager object and call its AttachTextBox method, it will add duplicated resources.
if (Application.Current.TryFindResource("AcTb_ListBoxStyle") == null)