如何在Silverlight中用Combobox触发DataGrid事件DataGridBeginningEdit、DataGridCellEditEnding? / 组合框的单元格模板

发布于 2024-11-25 04:36:42 字数 1641 浏览 2 评论 0原文

我想使用 DataGridevents(DataGridBeginningEdit、DataGridCellEditEnding 等)来处理和检测更改。据我了解,如果没有“CellTemplate”,这些就不会被触发。因此,我尝试使用 TextBlock 创建适当的单元格模板,但我想这对于我在 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>

谢谢

I want to use the DataGridevents (DataGridBeginningEdit, DataGridCellEditEnding, ..etc) to handle and detect changes. As far as I understood, without a "CellTemplate" these are not triggered. So I am trying to create an appropriate celltemplate using a TextBlock, but I guess it is not very straightforward with the binding I am using for the Combobox in the CellEditingTemplate, because I am using "DisplayMemberPath"..

There are examples of simpler cases but I couldn't find smth for this scenario. See Xaml snippet below;

<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>

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回忆躺在深渊里 2024-12-02 04:36:42

事实证明,我有两个选择。

解决方案 #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>

我将绑定路径从字符串更改为具有代码和模板属性的对象。

这个 博客 帮助了很多..

It turns out, i have two options..

Solution #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>

I changed the binding path from string to the object with Code and Template properties..

This blog helped a lot..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文