Я изменяю пользовательские элементы управления в главном окне, используя связанное свойство элемента управления содержимым.
XMAL:
<ContentControl Grid.Row="0" Content="{Binding MainContent, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></ContentControl>
ИМУЩЕСТВО:
private UserControl _mainContent;
public UserControl MainContent
{
get
{
return _mainContent;
}
set
{
_mainContent = value;
OnPropertyChanged();
}
}
КОДЗАД:
MainContent = new TestUserControl();
НА ИМУЩЕСТВЕ ИЗМЕНЕНО:
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
protected virtual void OnPropertyChanged()
{
string propertyName = new System.Diagnostics.StackTrace().GetFrame(1).GetMethod().Name.Substring(4);
OnPropertyChanged(propertyName);
}
Моя проблема заключается в том, что на одном конкретном тестовом компьютере (похожем на другие, в этом нет ничего уникального или странного. Windows 7, 4 ГБ ОЗУи т. д.), при изменении пользовательских контролов с использованием этого механизма приложение зависает.
Глядя на мои журналы, получена команда Изменить, создан новый пользовательский элемент управления, запускается конструктор.Свойство Main Content установлено, событие OnPropertyChanged вызывает
, а затем ничего.Приложение зависает, и Windows сообщает, что оно не отвечает, и закрывает приложение.
Событие OnLoaded пользовательского элемента управления никогда не запускается.
Это происходит при такой загрузке любого пользовательского элемента управления на конкретном компьютере..
Идеи, комментарии приветствуются.Идея, как отладить этот, приветствуется.
ОБНОВЛЕНИЕ: Поскольку это тестовая машина, она не очень часто перезагружается.
После того, как мы перезагрузили машину, проблемаушел. Я все еще хотел бы знать, почему и как остановить это снова.
PS.Платформа Target - x86, а проблемный компьютер - x64, но в другом окне 7 x64 проблем не было.Мы используем .net Framework 4.0