|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
собсна имеется некий класс, реализующий ICustomTypeDescriptor, кол-во свойств (полей, называейт как хотите) может быть разным. коллекция этих объектов является источником для грида, значения свойств (полей) хотелось бы видеть в столбцах (Columns) DataGrid. вопрос в чем - как бы это покрасивше уложить это дело в MVVM паттерн, как-то у меня не получилось :( но я в MVVM новичок, пока только эксперементирую. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2011, 13:26 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!собсна имеется некий класс, реализующий ICustomTypeDescriptor, кол-во свойств (полей, называейт как хотите) может быть разным. коллекция этих объектов является источником для грида, значения свойств (полей) хотелось бы видеть в столбцах (Columns) DataGrid. вопрос в чем - как бы это покрасивше уложить это дело в MVVM паттерн, как-то у меня не получилось :( но я в MVVM новичок, пока только эксперементирую. Спасибо.1. Сделать генерацию колонок грида прямо в классе морды (UserControl, Window и т. п.). Вынести этот код в стратегию и вызывать из Loaded event или откуда удобнее. 2. Сделать присоединяемое свойство. 3. Сделать attached behavior на базе библиотеки System.Windows.Interactivity (Expresion Blend SDK). 4. Унаследовать контрол от DataGrid, и реализовать там. Другими словами, каким-либо доступным способом поместить этот код в морду. Это чисто её задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2011, 18:28 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!, Если проблема в биндинге к объекту с произвольным количеством свойств, то http://forums.silverlight.net/forums/p/95440/218611.aspx#7.2_H ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 07:04 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
enigmaticwinsky!, Если проблема в биндинге к объекту с произвольным количеством свойств, то http://forums.silverlight.net/forums/p/95440/218611.aspx#7.2_H Эта ссылка для SL2. C четвертой версии, где появился DynamicObject, нет никаких проблем ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 07:33 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
i, Окей, разные варианты это хорошо. Плохо то, что http://connect.microsoft.com/VisualStudio/feedback/details/522119/databinding-to-dynamic-objects-is-broken Кстати, генерация типов в рантайме в числе "работ вокруг". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 10:55 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
Алексей К, Алексей К1. Сделать генерацию колонок грида прямо в классе морды (UserControl, Window и т. п.). Вынести этот код в стратегию и вызывать из Loaded event или откуда удобнее так и делал, но не прет, хочется чтобы "оно само" :) хочется что-то вроде такого (псевдокод): Код: plaintext 1. 2. 3. 4.
над остальными предложенными вами способами подумаю, в любом случае, спасибо за ответ :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 11:00 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
enigmatic, enigmaticКстати, генерация типов в рантайме в числе "работ вокруг". не понял мысль. кстати я не говорил о генерации именно типов в рантайме, у меня генерируются только св-ва с весьма опрделенными типами. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 11:08 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!, А что на счет AutoGenerateColumns = true? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 12:49 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!, То есть генерация класса бизнес-объекта, который есть набор свойств, а к каждому свойству мы привязываем столбец грида. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 13:07 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
enigmatici, Окей, разные варианты это хорошо. Плохо то, что http://connect.microsoft.com/VisualStudio/feedback/details/522119/databinding-to-dynamic-objects-is-broken Кстати, генерация типов в рантайме в числе "работ вокруг". C DynamicObject точнее было бы сказать, что не работает как в WPF. C этим можно было бороться с помощью конвертеров или индексных свойств. Но с ICustomTypeDescriptor в пятой версии теперь дела обстоят даже лучше, чем в WPF, тк после добавления свойств известны их типы при binding'е. Сейчас гоняю тесты, пока все ок(в частности, после добавления свойств к объекту, автогенерация в datagrid'е проходит отлично). Красота! Гибкость членов необыкновенная!!!! ЗЫ По теме. Можно еще задавать свои аттрибуты свойствам и поним генерить нужные столбцы ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 13:24 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
Руки-крюкиwinsky!, А что на счет AutoGenerateColumns = true? есть возможность сгенерировать колонки не для всех свойств? по-моему - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 14:03 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
enigmaticwinsky!, То есть генерация класса бизнес-объекта, который есть набор свойств, а к каждому свойству мы привязываем столбец грида. так у меня проблема не в создании/генерации класса бизнес-объекта, а в его отображении в виде строки в гриде, вернее даже сказать - как это уложить в паттерн MVVM - вопрос носит где-то даже теоретический характер, но если решение будет - можно применить и на практике :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 14:06 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
SeVaЗЫ По теме. Можно еще задавать свои аттрибуты свойствам и поним генерить нужные столбцы я вас очень прошу высказываться в этом топике исключительно по теме (воспринимать именно как просьбу). генерить столбцы - самое простое и очевидное решение, собственно в одном из проектов его и использовал, но мне оно не нравится, даже не могу сформулировать чем, как только смогу - скажу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 14:09 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!Алексей К1. Сделать генерацию колонок грида прямо в классе морды (UserControl, Window и т. п.). Вынести этот код в стратегию и вызывать из Loaded event или откуда удобнее так и делал, но не прет, хочется чтобы "оно само" :) А в любом случае где-то придётся подписываться на событие. В случае с attached property/behavior или MyDataGrid подписка на событие выносится из прикладного кода, что наверное хорошо. В случае с attached property ещё появляется возможность присваивать его через стиль, что может быть весьма полезно. winsky!хочется что-то вроде такого (псевдокод): Код: plaintext 1. 2. 3. 4.
над остальными предложенными вами способами подумаю, в любом случае, спасибо за ответ :) В случае с attached property это может выглядеть как-то так: Код: plaintext
Через interaction может быть как-то так. Но принцип тот же. Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 15:09 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
ЗЫ: Я бы "по старинке" унаследовал контрол от датагрида и сделал там. Предполагаю, что вероятность использования этой фичи с разными типами DataGrid-ов не высока. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 15:12 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
Алексей КЗЫ: Я бы "по старинке" унаследовал контрол от датагрида и сделал там. Предполагаю, что вероятность использования этой фичи с разными типами DataGrid-ов не высока. не в моем случае :) хотя, используя этот подход можно тоже добиться достаточной гибкости. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 15:22 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!Руки-крюкиwinsky!, А что на счет AutoGenerateColumns = true? есть возможность сгенерировать колонки не для всех свойств? по-моему - нет. Я уверен есть атрибут, который заставляет грид игнорировать свойство. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 15:50 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!SeVaЗЫ По теме. Можно еще задавать свои аттрибуты свойствам и поним генерить нужные столбцы я вас очень прошу высказываться в этом топике исключительно по теме (воспринимать именно как просьбу). генерить столбцы - самое простое и очевидное решение, собственно в одном из проектов его и использовал, но мне оно не нравится, даже не могу сформулировать чем, как только смогу - скажу :) Если тебе не нравится генерация столбцов и есть ICustomTypeProvider, то не морочь нам голову, пусть он возвращает тип с набором только тех свойств, которые нужно отображать в гриде ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 16:15 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
SeVa, Если Вы так бережете свою голову - просто не читайте этот топик. Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 17:03 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
Руки-крюкиwinsky!пропущено... есть возможность сгенерировать колонки не для всех свойств? по-моему - нет. Я уверен есть атрибут, который заставляет грид игнорировать свойство. атрибута не нашел, но есть события AutoGeneratingColumn & AutoGeneratedColumns можно конечно как-то вот так: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 19:08 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
winsky!атрибута не нашелМожет [Browsable(False)] ? Или что-то из System.ComponentModel.DataAnnotations namespace ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 19:24 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
Posted by Microsoft on 23.04.2009 at 13:34Hi Moondaddy! In Visual Studio 2010 the browsable attribute will work for WPF. Интересно, автор сдержал своё обещание? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2011, 19:41 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
Руки-крюкиЯ уверен есть атрибут, который заставляет грид игнорировать свойство. Очередной бред. Тут всё есть http://wpf.codeplex.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2011, 18:50 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
iРуки-крюкиЯ уверен есть атрибут, который заставляет грид игнорировать свойство. Очередной бред. Тут всё есть http://wpf.codeplex.com/ будьте добры ткнуть меня носом, где там это все? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.06.2011, 11:48 |
|
MVVM - DataGrid - динамическое кол-во столбцов
|
|||
---|---|---|---|
#18+
public class TestItem { [DisplayName("Display Name 1")] public int Value1 { get; set; } [DisplayName("Display Name 2")] public int Value2 { get; set; } [DisplayName("Display Name 3")] public int Value3 { get; set; } } http://code.cheesydesign.com/?p=701 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2012, 12:47 |
|
|
start [/forum/topic.php?fid=21&tid=1441951]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 449ms |
0 / 0 |