我有一个带有列数的数据网格。我想动态设置它的displayIndex。
<DataGrid ItemsSource="{Binding ListItems}" RowStyle="{StaticResource DataGridRowStyle}"
AutoGenerateColumns="False" RowHeight="60" CanUserAddRows="False"
CanUserDeleteRows="False" CanUserResizeRows="False" AlternationCount="2"
HorizontalGridLinesBrush="LightSteelBlue" VerticalGridLinesBrush="LightSteelBlue"
Selectionmode="Single" SelectedItem="{Binding SelectedSearchItem}"
IsReadOnly="True" KeyboardNavigation.TabNavigation="Once">
<DataGrid.Background>
<StaticResource ResourceKey="{x:Static systemcolors.WindowBrushKey}"/>
</DataGrid.Background>
<DataGrid.AlternatingRowBackground>
<StaticResource ResourceKey="InventoryManagementAlternatingRowBackground"/>
</DataGrid.AlternatingRowBackground>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Image" CellStyle="{StaticResource DataGridImageCellStyle}" HeaderStyle="{StaticResource DataGridImageColumnHeaderStyle}" />
<DataGridTextColumn Header="InventoryMstrId" Visibility="Hidden" Binding="{Binding InventoryMasterId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Manufacturer" Binding="{Binding Manufacturer}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="BrandId" Visibility="Hidden" Binding="{Binding BrandId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Brand" Binding="{Binding Brand}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="SeriesId" Visibility="Hidden" Binding="{Binding SeriesId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Collection" Binding="{Binding Collection}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Description" Binding="{Binding Description}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="MaterialId" Visibility="Hidden" Binding="{Binding MaterialId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Material" Binding="{Binding Material}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Color" Binding="{Binding Color}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Eye" Binding="{Binding Eye}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="BridgeId" Visibility="Hidden" Binding="{Binding BridgeId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Bridge" Binding="{Binding BridgeDescription}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="DBL" Binding="{Binding Dbl}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Temple" Binding="{Binding Temple}" CellStyle="{StaticResource DataGridTextCellStyle}" DisplayIndex="1"/>
<DataGridTextColumn Header="Retail Price" Binding="{Binding RetailPrice}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="A" Binding="{Binding A}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="B" Binding="{Binding B}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Catalog Price" Binding="{Binding CatalogPrice}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="CategoryTypeId" Visibility="Hidden" Binding="{Binding CategoryTypeId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Category Type" Binding="{Binding CategoryType}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="ED" Binding="{Binding ED}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="GenderTypeId" Visibility="Hidden" Binding="{Binding GenderTypeId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Gender" Binding="{Binding Gender}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="TempleId" Visibility="Hidden" Binding="{Binding TempleId}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="Temple Description" Binding="{Binding TempleDescription}" CellStyle="{StaticResource DataGridTextCellStyle}" />
<DataGridTextColumn Header="UPC" Binding="{Binding UPC}" CellStyle="{StaticResource DataGridTextCellStyle}" />
</DataGrid.Columns>
<i:Interaction.Behaviors>
<behaviors:DataGridColumnVisibilityToggleBehavior DisplayColumns="{Binding DisplayColumns}" />
<behaviors:DataGridSetInitialColumnWidthBehavior MinimumStartingColumnWidth="100" FillAvailableDataGridWidth="True" />
</i:Interaction.Behaviors>
</DataGrid>
这是xaml文件。
ViewModel:
private int _setDisplayIndex;
public int SetDisplayIndex
{
get => _setDisplayIndex;
set
{
if (_setDisplayIndex != value)
{
_setDisplayIndex = value;
RaisePropertyChangedEvent("SetDisplayIndex");
}
}
}
if (GridSelectedColumns != null)
{
foreach (var selColumn in GridSelectedColumns)
{
ListSearchResults.DisplayColumns.Add(selColumn.FieldName);
}
}
此处selColumn.FieldName是选择显示的列。结果应按相同顺序排列。但这并没有接受这个命令。 所以我想以此顺序绑定displayIndex属性。