隐藏和重新排序分页集合视图中的列



我有一个 silverlight 5.0 应用程序,我有一个PagedCollectionView,它有一个员工ObservableCollection

我已经把我的PagedCollectionView绑在DataGrid上。

不想在datagrid中显示我所有员工的财产

我想通过PagedCollectionView自己安排我的专栏

但我不知道该怎么做

请帮忙。

您应该在模板字段中添加任何控件并与寻呼机属性绑定:

<sdk:DataGrid Grid.Row="2" Style="{StaticResource RegularDataGridStyle}" Margin="8"
                      ItemsSource="{Binding ElementName=DemoSeachMast,Path=DataContext.DemmoPager}"
                      IsReadOnly="True"
                      CanUserReorderColumns="False" 
                      SelectedItem="{Binding ElementName=DemoSeachMast,Path=DataContext.SelectedDemoSearch,Mode=TwoWay}" Grid.ColumnSpan="2">
            <sdk:DataGrid.Effect>
                <DropShadowEffect/>
            </sdk:DataGrid.Effect>
            <sdk:DataGrid.Columns>
                <sdk:DataGridTemplateColumn Header="Details">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button x:Name="btnImage" Click="Button_Click" Width="25">
                                <Button.Template>
                                    <ControlTemplate>
                                        <Border CornerRadius="5" Background="Transparent">
                                            <Image Source="/Assets/Icons/Window.png" Height="25" Width="25"/>
                                        </Border>
                                    </ControlTemplate>
                                </Button.Template>
                            </Button>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>


            </sdk:DataGrid.Columns>
        </sdk:DataGrid>

有两种方法可以做到这一点,在这两种情况下,您都需要将 AutoGenerateColumn 设置为 false

  1. 如果已知道要在设计时在网格中显示的列,请直接在 XAML 中添加列。
  2. 如果您在设计时不知道该列,并且如果它来自具有描述顺序和可见性的某些属性的数据库,则添加自动生成列事件,在该事件中,您可以使列可见或不创建列,甚至更改顺序。
*

编辑*

网 格。项目源 = 产品.获取产品(200);
网 格。自动生成列 += grid_AutoGeneratingColumn;


void grid_AutoGeneratingColumn(Object sender, DataGridAutoGeneratingColumnEventArgs e) { 字符串标头名称 = e.Column.Header.ToString();

        switch (headername)
        {
            case "Line":
            case "Color":
                e.Cancel = true; //Cancel the columns don't want to generate
                break;
            case "Name":
                e.Column.Header = "Name Modified";
                e.Column.DisplayIndex = 1;
                break;
            case "Price":
                e.Column.Header = "Price header";
                e.Column.DisplayIndex = 0;
                break;
            default:
                e.Cancel = true;
                break;
        }
    }


从示例中可以看出,价格在名称之后,但不仅更改了标题,我还更改了显示顺序。如果要运行,价格作为第一列出现,名称作为第二列出现,所有其他列将从显示中删除。
http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.autogeneratingcolumn(v=vs.95).aspx

希望这有帮助。

最新更新