我正在尝试使用 GridControl
来自 DevExpress,但我不能做我通常在 ListView
中做的事情用GridView
View
.
我都做了。使用 DisplayMemberBinding
和 CellTemplate
.两者都没有显示。下面的代码(我删除了一些列):
<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>
如图所示:
您可以看到我的专栏但没有数据。我绑定(bind)了 3 个项目,它显示了 3 行。数据本身已绑定(bind),但看起来模板未显示。
我尝试了与 this 相同的方法问题但不适合我。
我类有INotifyPropertyChanged
我用了ObservableCollection<T>
在绑定(bind)到 GridControl
之前.
唯一可行的方法是删除几乎所有代码并更改 AutoPopulateColumns
至 True
.但在某些情况下,我想要自定义格式,但无法使用此选项实现。
编辑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>
看起来这种方法适用于 ListView
和 DataGrid
.遗憾GridControl
行为不同。
使用 <dxg:GridColumn.EditSettings>
是正确的方法吗?
最佳答案
它最终会变成一个更复杂的问题。
正如我在编辑中提到的,TextEditSettings
在特定情况下做了我想要的。但是当我改进代码后,一些错误开始出现。
提到之后我遇到的问题here在官方 DevExpress 论坛上,我总结如下:
真正的问题
我在一些报告中使用基类,在那些网格中我使用他们的派生类。
我在问题中提到的解决方案适用于常规的派生类,但是当我开始使用基类和派生类的属性时,一些奇怪的行为开始发生。
通过将 TextEditSettings
与 FieldName
结合使用,我可以格式化数据并显示派生类中属性的摘要,但对于基类中的属性它不起作用。
所以我更改为 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/