Привязка Silverlight 4 на основе того, что возвращается из конвертера - PullRequest
0 голосов
/ 01 июня 2010

Я думаю, что самый простой способ объяснить это на примере.

У меня есть Datagrid с контекстом данных списка объектов People:

Люди { Имя строки; int AstroSignCode; }

Я использую код для хранения знака зодиака, потому что значения будут сохранены в базе данных. Я не могу просто использовать Астрологический Объект.

Затем у меня есть текстовая колонка, которая привязывается к этому объекту и использует конвертер, который возвращает объект AstrologySign из статического списка знаков на основе перекрестной ссылки между AstrologySign.ID и People.AstroSignCode:

AstrologySign { Имя строки; DateTime StartDate; DateTime EndDate; int ID; }

Так что мой конвертер возвращает объект вместо чего-то отображаемого.

Как связать столбец с элементом объекта, возвращенного из конвертера?

мой Xaml пока для столбца таков:

Я думаю, что мне может понадобиться использовать DataGridTemplateColumn, но я больше не уверен.

1 Ответ

0 голосов
/ 02 июня 2010

Я ответил на свой вопрос. потребовалось некоторое время, чтобы понять это, потому что для меня это было неочевидно.

Мне действительно нужно использовать DataGridTemplateColumn вместо DataGridTextColumn.

<sdk:DataGridTemplateColumn Header="Astro Sign">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock DataContext="{Binding AstroSign, Converter={StaticResource AstrologySignConverter}}" Text="{Binding Name}"/>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
            </sdk:DataGridTemplateColumn>

То, что здесь происходит, - это контекст данных DataGrid, представляющий собой список людей. У каждого человека есть астросигнал, который является целым числом. AstrologySignConverter сопоставляет его с объектом AstrologySign, который содержит имя. поэтому я создаю табличку с данными и использую элемент управления TextBlock и устанавливаю его контекст для привязки, используя конвертер, затем связываюсь с элементом объекта, который возвращает конвертер.

Все просто, когда ты видишь, что можешь это сделать. Спасибо всем, кто пытался решить эту проблему!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...