Reputation: 38094
I added a record in a table of SQLServer with WPF-application
and refresh DataGrid shown a new record. For instance, I add user which has name "Peter, last name "Pen"
and this record adds at the end of DataGrid. How to move focus on this record and highlight on that? In other words, how to move focus and highlight by name or surname?
ViewModel has such code:
<Window x:Class="Students.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="996" Width="1191" xmlns:my="clr-namespace:Students" Loaded="Window_Loaded" WindowStartupLocation="CenterScreen">
<Window.Resources>
<my: StudentDataSet x:Key="StudentDataSet" />
<CollectionViewSource x:Key="StudentViewSource" Source="{Binding Path=S_DEP, Source={StaticResource StudentDataSet}}" />
</Window.Resources>
<Grid>
<DataGrid AutoGenerateColumns="False" EnableRowVirtualization="True" Height="615" HorizontalAlignment="Left" ItemsSource="{Binding Source={StaticResource StudentViewSource}}" Margin="21,322,0,0" Name="StudentDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" VerticalAlignment="Top" Width="1046">
<DataGrid.Columns>
<DataGridTextColumn x:Name="NameColumn" Binding="{Binding Path=Name}" Header="Name" Width="SizeToHeader" MinWidth="110" />
<DataGridTextColumn x:Name="LastNameColumn" Binding="{Binding Path=LastName}" Header="LastName" Width="SizeToHeader" MinWidth="100"/>
<DataGridTextColumn x:Name="PhoneColumn" Binding="{Binding Path=PHONE}" Header="Phone Number" Width="SizeToHeader" MinWidth="105" />
</DataGrid.Columns>
</DataGrid>
</Grid>
Model has such code:
UserBoard.StudentDataSet aRCHDOC_1DataSet = ((UserBoard.StudentDataSet)(this.FindResource("StudentDataSet")));
// Loading data in the table Student UserBoard.StudentDataSetTableAdapters.StudentTableAdapter StudentDataSet_StudentTableAdapter = new UserBoard.StudentDataSetTableAdapters.StudentTableAdapter();
StudentDataSet_StudentTableAdapter.Fill(StudentDataSet.Students);
System.Windows.Data.CollectionViewSource StudentViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("StudentViewSource")));
StudentViewSource.View.MoveCurrentToFirst();
//Highlighting a necessary row
string position = e.Someth_property;
for (int i = 0; i < StudentDataGrid.Items.Count; i++)
{
//What do I should write here?
}
Please, as a kindness to me! Give examples for WPF 2010 as code of Visual C# does not work in WPF 2010.
Upvotes: 0
Views: 5514
Reputation: 772
For WPF you have to add gridview control inside Listview
, after that you can easily select and focus particular record in Gridview.
Otherwise you must have to use DataGrid Control for this kind of stuff.
For example (Listview)
refer this code:
myListView.SelectedItem = myListView.Items[index];
myListView.ScrollIntoView(myListView.Items[index]);
ListViewItem listViewItem = myListView.ItemContainerGenerator.ContainerFromIndex(index) as ListViewItem;
listViewItem.Focus();
For example (DataGrid)
:
int index = 11;
myDataGrid.SelectedItem = myDataGrid.Items[index];
myDataGrid.ScrollIntoView(myDataGrid.Items[index]);
DataGridRow dgrow =(DataGridRow)myDataGrid.ItemContainerGenerator.ContainerFromItem(myDataGrid.Items[index]);
dgrow.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
Upvotes: 1
Reputation: 772
If you want to set focus on last added row
then try this code:
dataGridView.ClearSelection();
int RwIndex= dataGridView.Rows.Count - 1;
dataGridView.Rows[RwIndex].Selected = true;
dataGridView.Rows[RwIndex].Cells[0].Selected = true;
Upvotes: 1