1 ) Dynamically Bind Silver light Data Grid
Method to dynamically create columns in Silver light
2) Click on data grid header and sorting
Here is how you do it in XAML:
<data:DataGridTextBoxColumn DisplayMemberBinding=”{Binding Title}” >
<data:DataGridTextBoxColumn.Header>
<Grid>
<HyperlinkButton Content=”Title” HorizontalAlignment=”Center” Tag=”Title” Click=”Sort_Click” />
</Grid>
<data:DataGridTextBoxColumn.Header>
</data:DataGridTextBoxColumn>
private void Sort_Click(object sender, RoutedEventArgs e)
{
button = sender as Button;
//button.Tag is your Sort property
// perform your sort here
}
If you do not want to do in XAML so you do not have to set one for every column. You can also do it in code after you set Grid Data binding:
theGrid.ItemsSource = YourDataList;
foreach (DataGridBoundColumnBase col in theGrid.Columns)
{
HyperlinkButton b = new HyperlinkButton();
b.Content = col.Header as string;
b.HorizontalAlignment = HorizontalAlignment.Center;
b.Click += Sort_Click;
b.Tag = col.Header;
col.Header = b;
}
3) Detect Click data on grid header
private void dgResult_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Point pt = e.GetPosition(this.LayoutRoot);
var list = VisualTreeHelper.FindElementsInHostCoordinates(pt, this.LayoutRoot);
foreach (UIElement elem in list)
{
if (elem.GetType().Name == “DataGridColumnHeader”)
{
DataGridColumnHeader dgColHeader = (DataGridColumnHeader)elem;
string temp = dgColHeader.Content.ToString();
}
}
}
http://forums.silverlight.net/forums/t/16615.aspx
Leave a comment