0

我有一个silverlight 5.0应用程序,其中我有PagedCollectionView一个雇员ObservableCollection

我已经绑定PagedCollectionViewDataGrid.

我不想在datagrid

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

但我不知道该怎么做

请帮忙。

4

2 回答 2

4

您应该在模板字段中添加任何控件并与分页器属性绑定:

<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>
于 2013-02-01T05:32:01.617 回答
1

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

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

*编辑*

grid.ItemsSource = Product.GetProducts(200);
grid.AutoGeneratingColumn += grid_AutoGeneratingColumn;


void grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { string headername = 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;
        }
    }


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

希望这可以帮助。

于 2013-02-01T14:53:24.413 回答