![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
На канвасе находятся элементы определенного типа. Мне нужно чтобы при наведении на элемент мышкой, он оказался сверху остальных элементов такого же типа, то есть имел максимальный ZIndex.
Вот мой код:
Но проблема в том, что все элементы имеют ZIndex = 0. При добавлении элемента на канву, необходимо вручную задавать ZIndex, или есть другой способ решегия задачи? Кроме того, мне нужно чтобы все элементы одного типа, прорисовывались выше элементов другого. Для этого придеся вручную задавать Z индексы? Это сообщение отредактировал(а) Anyone - 14.10.2009, 10:53 |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
Насколько я понял, нужно либо задавать ZIndex для всех элементов канвы (для нового элемента ZIndex=canvas.Children.Count), либо поместить нужный элемент в конец Children (при этом ни у каких элементов не должно быть ZIndex).
Добавлено через 4 минуты и 42 секунды Если нужно поднимать элемент только для элементов своего типа, раздели канву на слои, для каждого типа свой. Тогда чтобы понять все элементы одного типа, нужно поднять соответсвующий слой. |
|||
|
||||
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Я сделал так.
Одним элементам задаю Z-индекс так: Canvas.SetZIndex(item, canvas.Children.OfType<CanvasItem>().Count()+1); Тем, которые должны быть выше (тупо, но работает): Canvas.SetZIndex(con1, 1000000 * (canvas.Children.OfType<Connection>().Count()+1)); А те, которые в самом верху - со значением Int32.MaxValue. При этом мой код, который я привел выше, работает хорошо. А как канву разделить на слои? |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
Что то вроде этого:
|
|||
|
||||
Anyone |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Я подумал что сама канва это позволяет сделать.
К сожалению, при написании собственной канвы я не учитывал возможность разбиения на слои, потому написать так я сейчас не могу без переписования кода... Есть идея на мой канвас кидать канвасы-слои, а элементы уже на эти слои. Должно получиться, спасибо за подсказку! |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |