1

Есть ListView. Его Items - это строки, ItemTemplate которых состоит, в т.ч. и из CheckBox-a. Вопрос: как по установлению галочки в checkbox, отобразить дочернее окно под этим Item, вроде того как это делает ToolTip. Как получить координаты Item, активированного галочкой checkbox в ListView, для вывода дочернего окна строго под ним.

что то вроде этого. Синий прямоугольник и есть дочернее окно, под checkbox, которому поставили галочку.

что то вроде этого. Синий прямоугольник и есть дочернее окно, под checkbox, которому поставили галочку.

  • Можете эскиз нарисовать того что хотите получить? Может вам нужно просто переключить шаблон контента CheckBox в зависимости от isChecked? – Андрей NOP Aug 14 '19 at 11:22
  • знаю, что в DataGrid есть <DataGrid.RowDetailsTemplate/>, еще есть контрол . – Andrey K. Aug 14 '19 at 11:24
  • Ага, ну т. е. вам именно ToolTip и нужен: https://metanit.com/sharp/wpf/5.3.php – Андрей NOP Aug 15 '19 at 16:56
  • Нет нет.. Tooltip уже прикручен к checkbox, отображает доп.информацию. A дочерняя форма по размещению похожа на tooltip, располагается под строкой, как бы подчеркивая строку с которой работаем на данный момент. На ней будут кнопки выбора действий, своя MVVM. И вызываться она будет после установки галочки на соответствующим checkbox. Я не знаю как именно расположить эту дочернюю форму под конкретным ListViewItem. – Алекс Дронго Aug 16 '19 at 10:40
  • 1
    @АлексДронго, используйте @ для того чтобы обратиться, иначе я не получаю уведомления о комментарии мне адресованном. Ну а по сути — как я и писал в первом комментарии, вам надо переключить шаблон контента вашего CheckBox, пример здесь: https://ru.stackoverflow.com/a/774441/218063 Также посмотрите дубликат к тому топику, если у вас меняется тип привязанной VM, то тот вариант будет удобнее – Андрей NOP Aug 16 '19 at 11:31
  • @АндрейNOP, я Вас правильно понял? Вы предлагаете не отлавливать координаты Items и вызывать дочернюю форму согласно этих координат, а просто изменить шаблон checkbox в шаблоне ListViewItem. Чтобы при установке галочки в checkbox-е отображался checkbox уже как бы с содержимым, которое в моей дочерней форме(другой DataTemplate)? – Алекс Дронго Aug 16 '19 at 12:35
  • Шаблон контента CheckBox или DataTemplate самого ListViewItem, как вам будет удобнее – Андрей NOP Aug 16 '19 at 14:05
  • @АндрейNOP, я понял Вас. Может тогда сделать один шаблон ListViewItem, часть которого устанавить в Visibility="Collapsed", а при установлении флажка в Visibility="Visible"? – Алекс Дронго Aug 16 '19 at 14:25
  • 1
    Можно и так, триггер подойдет. Если всё же хотите показывать окно, координаты мыши можно найти как указано здесь: https://ru.stackoverflow.com/a/871246/218063 не забудьте к координатам мыши относительно окна прибавить еще смещение самого окна – Андрей NOP Aug 16 '19 at 14:32
  • @АндрейNOP, а я только хотел этот вопрос задать из спортивного интереса: почему нельзя как в WinForm: int y = e.Item.Position.Y; – Алекс Дронго Aug 16 '19 at 14:35
  • @АндрейNOP. Спасибо за помощь) – Алекс Дронго Aug 16 '19 at 14:42
  • 1
    Можно, если сильно захотеть, найти родителя типа ListViewItem и вычислить его координаты по указанному примеру. Вот, кстати, что я говорил про экранные координаты: https://stackoverflow.com/a/10332880/6766879 – Андрей NOP Aug 16 '19 at 14:43
  • @АндрейNOP. Значение Point то я получил, а вот как его прикрутить к window ни как не пойму. В WinForm было form1.Location = new Point(11, y + 77); В WPF ??? – Алекс Дронго Aug 16 '19 at 16:34
  • Left/Top смотрите – Андрей NOP Aug 16 '19 at 16:52

0 Answers0