0

私は WPF アプリケーションで DataGrid を使用しており、最後まで DataGridRow を 1 つずつ取得するために for ループを使用しています。現在、for ループICollectionViewを使用した後にデータグリッドを並べ替えることICollectionViewができません。

XAML マークアップ:

<DataGrid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" x:Name="GridTest"  ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" AreRowDetailsFrozen="True" CanUserResizeColumns="False" CanUserDeleteRows="False" IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn  Header="SNo" Width="0.25*" Binding="{Binding Path=SNo}" CanUserResize="False" />
        <DataGridTextColumn Header="SalaryAmt" Width="0.25*" Binding="{Binding Path=SalaryAmt}" CanUserResize="False" />
        <DataGridTextColumn Header="Name" Width="0.20*" Binding="{Binding Path=Name}" CanUserResize="False"/>
        <DataGridTextColumn Header="Address" Width="0.30*" Binding="{Binding Path=Address}" CanUserResize="False"/>
    </DataGrid.Columns>
</DataGrid>

コードビハインド:

namespace SortGrid
{
    public partial class TestDG
    {
        Dictionary<string, GridStructure> Dict1;
        ObservableCollection<GridStructure> List1 = new ObservableCollection<GridStructure>();
        private ICollectionView _currentView;
        _currentView = CollectionViewSource.GetDefaultView(List1);
        _currentView.SortDescriptions.Add(new SortDescription("SalaryAmt", ListSortDirection.Ascending));

        void DispatchTime_Tick(object sender, EventArgs e)
        {
            Dict1.Clear();
            _currentView.Refresh();
            GridColors(GridTest_TierColors, GridTest);
        }

        private void GridColors(Brush[] col, DataGrid Grid)
        {
            int colorind = 0;

            for (int rowind = 0; rowind < Grid.Items.Count; rowind++)
            {
                DataGridRow row = (DataGridRow)Grid.ItemContainerGenerator.ContainerFromIndex(rowind);

                if (row != null)
                {
                    // conditional formatting here
                }
            }
        }
    }
}
4

0 に答える 0