gpt4 book ai didi

wpf - 如何更改数据在 WPF GridControl 中的显示方式?

转载 作者:行者123 更新时间:2023-12-01 12:52:35 33 4
gpt4 key购买 nike

我正在尝试使用 GridControl来自 DevExpress,但我不能做我通常在 ListView 中做的事情用GridView View .

我都做了。使用 DisplayMemberBindingCellTemplate .两者都没有显示。下面的代码(我删除了一些列):

<dxg:GridControl ItemsSource="{Binding}" Name="gridControl1">
<dxg:GridControl.Columns>
<dxg:GridColumn Header="Teste" DisplayMemberBinding="{Binding DataNascimento}"/>
<dxg:GridColumn Header="Nome">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Nome}"/>
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView Name="tableView1" AutoWidth="True" />
</dxg:GridControl.View>
</dxg:GridControl>

如图所示:

Grid with bound data but shown nothing

您可以看到我的专栏但没有数据。我绑定(bind)了 3 个项目,它显示了 3 行。数据本身已绑定(bind),但看起来模板未显示。

我尝试了与 this 相同的方法问题但不适合我。我类有INotifyPropertyChanged我用了ObservableCollection<T>在绑定(bind)到 GridControl 之前.唯一可行的方法是删除几乎所有代码并更改 AutoPopulateColumnsTrue .但在某些情况下,我想要自定义格式,但无法使用此选项实现。

编辑1:我在设计模式下做了这个并且工作:

            <dxg:GridColumn FieldName="DataNascimento" Name="gridColumn3">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="{}{0:dd/MM/yyyy HH:mm:ss}" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>

编辑2:尝试了同样的方法 @blindmeis建议使用 grid 并且它像我预想的那样工作:

<DataGrid AutoGenerateColumns="False" Grid.Row="2" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding DataNascimento}" Header="Nascimento" />
<DataGridTextColumn Binding="{Binding Nome}" Header="Header" />
<DataGridTemplateColumn Header="Teste">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Nome}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

看起来这种方法适用于 ListViewDataGrid .遗憾GridControl行为不同。

使用 <dxg:GridColumn.EditSettings>是正确的方法吗?

最佳答案

它最终会变成一个更复杂的问题。

正如我在编辑中提到的,TextEditSettings 在特定情况下做了我想要的。但是当我改进代码后,一些错误开始出现。

提到之后我遇到的问题here在官方 DevExpress 论坛上,我总结如下:

真正的问题

我在一些报告中使用基类,在那些网格中我使用他们的派生类。

我在问题中提到的解决方案适用于常规的派生类,但是当我开始使用基类和派生类的属性时,一些奇怪的行为开始发生。

通过将 TextEditSettingsFieldName 结合使用,我可以格式化数据并显示派生类中属性的摘要,但对于基类中的属性它不起作用。

所以我更改为 DisplayMemberBinding,它适用于所有属性,但摘要停止工作。

解决方案

要使格式选项可用于您的类继承的属性以使摘要正常工作,您必须像这样使用:

Side Note: Don't know if all those properties in the TableView are really necessary but since this control is very sensitive to changes with them I keep them all just to make clear what worked for me.

<dxg:GridControl ItemsSource="{Binding MyObservableCollection}">
<dxg:GridControl.Columns>
<dxg:GridColumn DisplayMemberBinding="{Binding Percent}"
FieldName="Percent"
Header="%">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="F2" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView AllowSorting="False"
ShowTotalSummary="True"
FilterEditorShowOperandTypeIcon="True"
NavigationStyle="Row"
MultiSelectMode="None"
AllowColumnFiltering="False"
AllowDateTimeGroupIntervalMenu="False"
AllowEditing="False"
AllowFilterEditor="False"
AllowGrouping="False"
ClipboardCopyAllowed="False"
ShowGroupPanel="False" />
</dxg:GridControl.View>
<dxg:GridControl.TotalSummary>
<dxg:GridSummaryItem FieldName="Percent"
DisplayFormat="F2"
SummaryType="Sum" />
</dxg:GridControl.TotalSummary>
</dxg:GridControl>

在这种情况下,它将在继承的 Percent 属性中起作用。 DisplayMemberBinding 将使其适用于 TextEditSettings 并且 GridColumn 中的 FieldName 用于制作摘要GridSummaryItem 中的属性。

关于wpf - 如何更改数据在 WPF GridControl 中的显示方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11293939/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com