0

DataGridevents (DataGridBeginningEdit、DataGridCellEditEnding、..etc) を使用して、変更を処理および検出したいと考えています。私が理解している限り、「CellTemplate」がないと、これらはトリガーされません。したがって、TextBlock を使用して適切な celltemplate を作成しようとしていますが、「DisplayMemberPath」を使用しているため、CellEditingTemplate の Combobox に使用しているバインディングはあまり簡単ではないと思います..

より単純なケースの例はありますが、このシナリオに適したものは見つかりませんでした。以下の 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>

ありがとうございました

4

1 に答える 1

0

結局のところ、私には2つのオプションがあります..

解決策 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>

コードとテンプレートのプロパティを使用して、バインディング パスを文字列からオブジェクトに変更しました。

このブログはとても役に立ちました..

于 2011-07-22T10:01:52.603 に答える