|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть форма, на ней листбокс и табконтрол. Листбокс выполняет роль меню, табконтрол - роль вкладок, как в браузере. По нажатию на элемент меню появляется новая вкладка с соответствующим ей контентом. Проблема в том, что при добавлении второй вкладки возникает исключение: Значение не попадает в ожидаемый диапазон. в MS.Internal.XcpImports.CheckHResult(UInt32 hr) в MS.Internal.XcpImports.SetValue(IManagedPeerBase obj, DependencyProperty property, DependencyObject doh) в MS.Internal.XcpImports.SetValue(IManagedPeerBase doh, DependencyProperty property, Object obj) в System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value) в System.Windows.DependencyObject.SetEffectiveValue(DependencyProperty property, EffectiveValueEntry& newEntry, Object newValue) в System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation) в System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet) в System.Windows.Controls.ContentControl.set_Content(Object value) в SilverlightApplication1.Services.TabConverter.Convert(Object value, Type targetType, Object parameter, CultureInfo culture) Исключение возникает в конвертере при добавлении второй вкладки: TabConverter Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Почему срабатывает исключение? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 07:46 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
enigmatic, Вы каждый раз пересоздаете все вкладки? А не проще завязать ItemSource на ObservableCollection открытых вкладок? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 12:36 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
Руки-крюки, ItemsSource и так завязан на ObservableCollection открытых вкладок, но дефолтный табконтрол не слушает ее CollectionChanged. Т.е. вкладки можно хоть в List'е хранить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 12:50 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
Руки-крюки, Дело в том, что у меня Silverlight :) Прошу прощения, что не сказал сразу же. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 13:18 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
enigmatic, Хм, странно. В WPF точно все работает. В SL не знаю, может вы просто забыли в проперти OC вызывать OnPropertyChanged? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 13:22 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
enigmatic, Попробовал на SL. Тупой таб контрол, трудно было чтоли ContentPresenter поставить, где надо. Оторвать бы руки тому, кто его делал =) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 13:44 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
Руки-крюки, Табконтрол сильверлайта вообще отдельная песня, в нем нельзя указать источником ItemsSource напрямую ObservableCollection<string>. Только через конвертер, приведя к IEnumerable<TabItem>. авторв проперти OC вызывать OnPropertyChanged В сеттере Tabs есть вызов OnPropertyChanged. Тут проблема не в создании вкладок, а в задании контента для них, потому что если не задавать контент вкладки в конвертере, то пустые вкладки нормально создаются. Вы не могли бы посмотреть пример из первого поста? Там почти MVVM, только команды не используются. Кажется я просто где-то натупил со способом задания контента. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 13:55 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
Руки-крюки, Да :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 13:58 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
enigmatic, Можно попробовать переопределить шаблон таб контрола. Сделать его похожим на WPF. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2011, 15:05 |
|
Исключение при добавлении таба
|
|||
---|---|---|---|
#18+
Руки-крюки, Дело в том, что эта ошибка сначала возникла с телериковским табконтролом, а затем, когда попробовал смоделировать на дефолтном, и на нем тоже. Думалось, дело в задании контента, но похоже это не так. Ссылки с гугла ведут и на сильверлайтовский, и на телериковский форум, так что возможно это проблема обоих табконтролов. Возможно дело в этом : In this case it happens because of a bug in Silverlight where the parent of the visuals is not cleared when they are changed using databinding. (In fact it is, but only for built-in a.k.a core dependency properties). Потому что, когда сделал без использования привязки, возникла проблема очистки контента (кроме удаления вкладок из самого контрола и ссылок на них, нужно было еще очистить свойство контента этих вкладок). Возможно в этой теме проблема та же. Пока создал тему на SL форуме и отложил. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2011, 14:16 |
|
|
start [/forum/topic.php?fid=21&fpage=52&tid=1442303]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 558ms |
total: | 682ms |
0 / 0 |