I have a grid view that uses a datatemple for each row to edit data. when I add a new row I want the cursor to be focused in the textbox in the datatemplate on the row details. Nothing seems to work. I have to tab to get to the textbox.
<
Window
x:Class
=
"GridviewDataTemplateFocusExample.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:GridviewDataTemplateFocusExample
=
"clr-namespace:GridviewDataTemplateFocusExample"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Window.Resources
>
<
DataTemplate
x:Key
=
"DetailView"
>
<
GridviewDataTemplateFocusExample:DetailView
/>
</
DataTemplate
>
</
Window.Resources
>
<
Grid
>
<
telerik:RadGridView
HorizontalAlignment
=
"Stretch"
Name
=
"radGridView1"
VerticalAlignment
=
"Stretch"
ItemsSource
=
"{Binding MyData}"
AutoGenerateColumns
=
"False"
CanUserInsertRows
=
"True"
RowIndicatorVisibility
=
"Collapsed"
CanUserDeleteRows
=
"False"
ShowInsertRow
=
"True"
ShowGroupPanel
=
"False"
IsSynchronizedWithCurrentItem
=
"True"
AddingNewDataItem
=
"radGridView1_AddingNewDataItem"
LoadingRowDetails
=
"radGridView1_LoadingRowDetails"
RowDetailsVisibilityMode
=
"Collapsed"
RowDetailsTemplate
=
"{StaticResource DetailView}"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewToggleRowDetailsColumn
/>
<
telerik:GridViewDataColumn
Header
=
"Title"
Width
=
"250"
DataMemberBinding
=
"{Binding Name}"
UniqueName
=
"TitleColumn"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
</
Window
>
using
System;
using
System.Windows;
using
System.Windows.Input;
using
Telerik.Windows.Controls.GridView;
namespace
GridviewDataTemplateFocusExample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
public
MainWindow()
{
this
.DataContext =
new
MainWindowVM();
InitializeComponent();
}
private
void
radGridView1_AddingNewDataItem(
object
sender, Telerik.Windows.Controls.GridView.GridViewAddingNewEventArgs e)
{
(
this
.DataContext
as
MainWindowVM).AddNewDataObject();
radGridView1.CommitEdit();
var gridView = e.OwnerGridViewItemsControl;
gridView.ScrollIntoViewAsync(gridView.Items[gridView.Items.Count - 1],
//the row
gridView.Columns[1],
//the column
new
Action<FrameworkElement>((f) =>
{
var row = f
as
GridViewRow;
if
(row !=
null
)
{
row.IsSelected =
true
;
row.DetailsVisibility = Visibility.Visible;
}
}));
e.Cancel =
true
;
}
private
void
radGridView1_LoadingRowDetails(
object
sender, Telerik.Windows.Controls.GridView.GridViewRowDetailsEventArgs e)
{
Keyboard.Focus((e.DetailsElement
as
DetailView).tbxTitle);
}
}
}
using
System.Collections.ObjectModel;
namespace
GridviewDataTemplateFocusExample
{
public
class
MainWindowVM
{
public
ObservableCollection<DataObject> MyData {
get
;
set
; }
public
MainWindowVM()
{
MyData =
new
ObservableCollection<DataObject>();
MyData.Add(
new
DataObject(
"Test 1"
));
MyData.Add(
new
DataObject(
"Test 2"
));
MyData.Add(
new
DataObject(
"Test 3"
));
MyData.Add(
new
DataObject(
"Test 4"
));
MyData.Add(
new
DataObject(
"Test 5"
));
}
public
void
AddNewDataObject()
{
MyData.Add(
new
DataObject(
"Test ??????"
));
}
}
public
class
DataObject
{
public
DataObject(
string
name)
{
Name = name;
}
public
string
Name {
get
;
set
; }
}
}
<
UserControl
x:Class
=
"GridviewDataTemplateFocusExample.DetailView"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable
=
"d"
d:DesignHeight
=
"300"
d:DesignWidth
=
"300"
>
<
Grid
>
<
Grid
FocusManager.FocusedElement
=
"{Binding ElementName=tbxTitle}"
FocusManager.IsFocusScope
=
"True"
>
<
Border
BorderThickness
=
"2"
Margin
=
"3"
BorderBrush
=
"Black"
CornerRadius
=
"12"
Padding
=
"5"
Background
=
"Transparent"
HorizontalAlignment
=
"Stretch"
>
<
telerik:RadTabControl
Margin
=
"2"
BackgroundVisibility
=
"Hidden"
HorizontalAlignment
=
"Stretch"
>
<
telerik:RadTabItem
Header
=
"Details"
>
<
Grid
Width
=
"Auto"
HorizontalAlignment
=
"Stretch"
Background
=
"Transparent"
Margin
=
"5"
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"Auto"
/>
</
Grid.RowDefinitions
>
<
Grid.ColumnDefinitions
>
<
ColumnDefinition
Width
=
"Auto"
/>
<
ColumnDefinition
Width
=
"*"
/>
</
Grid.ColumnDefinitions
>
<
TextBlock
Text
=
"Name: "
Margin
=
"0,5,0,5"
FontWeight
=
"Bold"
Grid.Row
=
"0"
Grid.Column
=
"0"
VerticalAlignment
=
"Center"
HorizontalAlignment
=
"Left"
Focusable
=
"False"
/>
<
TextBox
Name
=
"tbxTitle"
Text
=
"{Binding Name}"
Margin
=
"0,5,0,5"
Grid.Row
=
"0"
Grid.Column
=
"1"
VerticalAlignment
=
"Center"
HorizontalAlignment
=
"Stretch"
Focusable
=
"true"
/>
</
Grid
>
</
telerik:RadTabItem
>
<
telerik:RadTabItem
Header
=
"Page 2"
>
</
telerik:RadTabItem
>
<
telerik:RadTabItem
Header
=
"Page 3"
>
</
telerik:RadTabItem
>
</
telerik:RadTabControl
>
</
Border
>
</
Grid
>
</
Grid
>
</
UserControl
>