В продолжение
этой темы.
Имеется менеджер листов, оформленный в палитре.
В палитре используется ListView.
Для биндинга листов используется специальный класс:
static ObservableCollection<LayoutForBinding> _currentDocLayouts;
private class LayoutForBinding
{
public string LayoutName { get; set; }
public bool ModelType { get; set; }
public int TabOrder { get; set; }
public bool TabSelected { get; set; }
}
Получение листов и их привязка происходят так:
Извините, вам запрещён просмотр содержимого спойлеров.
При двойном клике мышкой в списке листов происходит переключение на лист:
// open by double click
private void LayoutItem_DoubleClick(object sender, MouseButtonEventArgs e)
{
OpenSelectedLayout();
}
private void OpenSelectedLayout()
{
var lm = LayoutManager.Current;
try
{
var doc = AcApp.DocumentManager.MdiActiveDocument;
if (LvLayouts.SelectedItems.Count > 1)
{
MpMsgWin.Show("Выберите, пожалуйста, один лист");
return;
}
lm.LayoutSwitched -= Lm_LayoutSwitched;
var selectedLayout = LvLayouts.SelectedItem as LayoutForBinding;
if (selectedLayout != null)
{
using (doc.LockDocument())
{
lm.CurrentLayout = selectedLayout.LayoutName;
doc.Editor.Regen();
}
BindingLayoutsToListView();
}
}
catch (Exception exception)
{
MpExWin.Show(exception);
}
finally
{
lm.LayoutSwitched += Lm_LayoutSwitched;
}
}
Так вот - проблема: ИНОГДА при переключении листов происходит фатальная ошибка. Проблема в том, что вызвать проблему никак не получается. Происходит в разных файлах, на разных компьютерах и с разной периодичностью - за целый рабочий день может ни разу не произойти, а может несколько раз.
Пишу сюда, в надежде на светлые идеи что и как попробовать исправить/переделать, чтобы такого не происходило ))