Comments 11
Спасибо, интересный велосипед, конечно, но ничего принципиально нового. Всё так же мы объявляем номер столбца/строки для каждого элемента.
Лично мне было бы интересно вот что
Допустим, есть у нас грид с 10-ю строками. В каждой по много элементов. И вот нам понадобилось удрать строку №2 со всем её содержимым.
Как решить:
1 — удалить элементы из строки №2 и сделать её рамер = 0. Плохо, засоряем код.
2 — удалить элементы из строки №2 и саму строку тоже, а для элементов из нижних строк уменьшить Grid.Row на 1. Очень неудобно, т.к. элементов много.
Хотелось бы иметь возможность указывать номер строки/столбца не абсолютно, а как-нибудь относительно.
У самого пока руки не доходят, может Вам будет интересно :)
Как решить:
1 — удалить элементы из строки №2 и сделать её рамер = 0. Плохо, засоряем код.
2 — удалить элементы из строки №2 и саму строку тоже, а для элементов из нижних строк уменьшить Grid.Row на 1. Очень неудобно, т.к. элементов много.
Хотелось бы иметь возможность указывать номер строки/столбца не абсолютно, а как-нибудь относительно.
У самого пока руки не доходят, может Вам будет интересно :)
Blend — лучше для WPF-ера нет. Он сделает это автоматом.
Правда адекватным бленд стал только в новой версии.
Правда адекватным бленд стал только в новой версии.
Думал над вашим вопросом, и пришёл к выводу, что, возможно, не совсем вас понял.
Вы имеете в виду удаление элементов из строки во время работы XAML-дизайнера среды разработки?
Просто в статье описан механизм динамической смены состояния Grid именно во время работы приложения…
Это может быть полезным для сложных интерфейсов, например, когда приложение поддерживает портретную и альбомную ориентацию, и в зависимости от неё визуальные элементы нужно компоновать слегка по-разному, а создавать новую страницу с дублирующимся кодом не имеет смысла.
Вы имеете в виду удаление элементов из строки во время работы XAML-дизайнера среды разработки?
Просто в статье описан механизм динамической смены состояния Grid именно во время работы приложения…
Это может быть полезным для сложных интерфейсов, например, когда приложение поддерживает портретную и альбомную ориентацию, и в зависимости от неё визуальные элементы нужно компоновать слегка по-разному, а создавать новую страницу с дублирующимся кодом не имеет смысла.
Правильнее, на мой взгляд, установить у ненужного элемента свойство Visibility в состояние Collased, либо же использовать ItemsControl. Даже если вы удалите строку номер два, то сам контрол останется в визуальном дереве и код останется засорён, если это можно так назвать.
В статье описан сам принцип и базовый синтаксис, усовершенствовать реализацию можно как угодно, на что хватит фантазии :)
Хотелось бы иметь возможность указывать номер строки/столбца не абсолютно, а как-нибудь относительно.
В статье описан сам принцип и базовый синтаксис, усовершенствовать реализацию можно как угодно, на что хватит фантазии :)
Код не стал лаконичнее. Даже наоборот, для новых сотрудников, читать подобное и каждый раз вспоминать становится сложнее.
+ ReSharper умеет работать с XAML и рефакторить в том числе колнки и строки у грида и его элементов. В вашем случае мы теряем такую возможность.
+ ReSharper умеет работать с XAML и рефакторить в том числе колнки и строки у грида и его элементов. В вашем случае мы теряем такую возможность.
На мой взгляд, лаконичнее выглядит нечто вроде StackGrid из Catel. В нём строки и столбцы задаются так же, как и в обычном Grid, а вот у содержимого задавать свойства уже необязательно, оно само раскладывается по ячейкам в порядке объявления. Есть также вспомогательные элементы EmptyCell, EmptyRow и EmptyColumn. Логики там на 2 экрана, можно и самому реализовать, если весь Catel тянуть не хочется.
Sign up to leave a comment.
Фишки XAML-разработчика: динамический Grid