我有一个 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。
- 如果已知道要在设计时在网格中显示的列,请直接在 XAML 中添加列。
- 如果您在设计时不知道该列,并且如果它来自具有描述顺序和可见性的某些属性的数据库,则添加自动生成列事件,在该事件中,您可以使列可见或不创建列,甚至更改顺序。
编辑*
网 格。项目源 = 产品.获取产品(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
希望这有帮助。