在WPF中将datagrid列的displayIndex属性绑定到其他数字

我有一个带有列数的数据网格。我想动态设置它的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属性。

zhufy2009 回答:在WPF中将datagrid列的displayIndex属性绑定到其他数字

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3133796.html

大家都在问