我有一个 silverlight 5.0 应用,其中PagedCollectionView
的{{1}} 员工。
我已将ObservableCollection
绑定到PagedCollectionView
。
我不想在DataGrid
我希望通过datagrid
但我不知道该怎么做
请帮忙。
答案 0 :(得分: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>
答案 1 :(得分:1)
有两种方法可以做到这一点。在这两种情况下,您需要将 AutoGenerateColumn设置为false 。
* 编辑 *
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之后,但不仅更改了标题我还更改了显示顺序。如果您要运行,则price作为第一列,Name作为第二列,所有其他列将从显示中删除。
http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.autogeneratingcolumn(v=vs.95).aspx
希望这有帮助。