Как запустить DataGridevents DataGridBeginningEdit, DataGridCellEditEnding с помощью комбинированного списка в Silverlight? / CellTemplate для Combobox - PullRequest
0 голосов
/ 21 июля 2011

Я хочу использовать DataGridevents (DataGridBeginningEdit, DataGridCellEditEnding, ..etc) для обработки и обнаружения изменений.Насколько я понял, без CellTemplate они не срабатывают.Поэтому я пытаюсь создать соответствующий шаблон ячейки, используя TextBlock, но я думаю, что это не очень просто с привязкой, которую я использую для Combobox в CellEditingTemplate, потому что я использую "DisplayMemberPath" ..

Тамприведены примеры более простых случаев, но я не смог найти что-то для этого сценария.См. Фрагмент Xaml ниже;

<data:DataGridTemplateColumn Width="100">
                                    <data:DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock HorizontalAlignment="Center" />
                                        </DataTemplate>
                                    </data:DataGridTemplateColumn.CellTemplate>
                                    <data:DataGridTemplateColumn.CellEditingTemplate>
                                        <DataTemplate>
                                            <ComboBox HorizontalAlignment="Stretch"
                                                        ItemsSource="{Binding DurationTypeList, Source={StaticResource itemSourceProvider}}"
                                                        SelectedValuePath="Code"
                                                        SelectedValue="{Binding Path=DurationTypeCode, Mode=TwoWay}" 
                                                        DisplayMemberPath="Template"  />
                                        </DataTemplate>
                                    </data:DataGridTemplateColumn.CellEditingTemplate>
                                </data:DataGridTemplateColumn>

Спасибо

1 Ответ

0 голосов
/ 22 июля 2011

Оказывается, у меня есть два варианта ..

Решение № 1

<data:DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock HorizontalAlignment="Left" Text="{Binding Path=DurationType.Template,  Mode=OneWay}"  />
                                        </DataTemplate>
                                    </data:DataGridTemplateColumn.CellTemplate>
                                    <data:DataGridTemplateColumn.CellEditingTemplate>
                                        <DataTemplate>
                                            <ComboBox HorizontalAlignment="Stretch"
                                                        ItemsSource="{Binding DurationTypeList, Source={StaticResource itemSourceProvider}}"
                                                        SelectedValuePath="Code"
                                                        SelectedValue="{Binding Path=DurationType, Mode=TwoWay}" 
                                                        DisplayMemberPath="Template"  />
                                        </DataTemplate>
                                    </data:DataGridTemplateColumn.CellEditingTemplate>

Я изменил путь привязки со строки на объект со свойствами Code и Template ..

Этот блог очень помог ..

...