This question is locked. New answers and comments are not allowed.
Hi I am using Autocomplete box inside Grid view.
I can use Autocompletecompbox but my requirement is different. Now I can also use GridviewData Column but I want to set My focus fix in my Autocomplete box till data loading or data validating. Here I am attaching my xaml file and .cs file I am not able to attached project here so I cannot attaching.
In Conclusion issue is when add new row focus going back of first cell, it should go in Autocompletebox.
<
UserControl
xmlns:my
=
"clr-namespace:SilverlightApplication1"
x:Class
=
"SilverlightApplication1.MainPage"
mc:Ignorable
=
"d"
xmlns:localVM
=
"clr-namespace:SilverlightApplication1"
d:DesignHeight
=
"1174"
d:DesignWidth
=
"932"
xmlns:sdk
=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
>
<
UserControl.Resources
>
<
localVM:PassParameter
x:Key
=
"param"
></
localVM:PassParameter
>
</
UserControl.Resources
>
<
Grid
x:Name
=
"LayoutRoot"
Background
=
"White"
>
<
TextBox
Height
=
"23"
Text
=
"123"
Margin
=
"722,154,90,997"
Name
=
"textBox1"
Width
=
"120"
/>
<!--<
sdk:AutoCompleteBox
IsTextCompletionEnabled
=
"True"
Height
=
"27"
MinimumPrefixLength
=
"3"
MinimumPopulateDelay
=
"1000"
HorizontalAlignment
=
"Left"
Margin
=
"0,50,0,0"
Name
=
"autoCompleteBox1"
VerticalAlignment
=
"Top"
Width
=
"120"
Populating
=
"autoCompleteBox1_Populating"
GotFocus
=
"autoCompleteBox1_GotFocus"
LostFocus
=
"autoCompleteBox1_LostFocus"
ValueMemberBinding
=
"{Binding Path=name}"
Text
=
"{Binding name1,Mode=TwoWay}"
TabIndex
=
"1"
>
<
sdk:AutoCompleteBox.ItemTemplate
>
<
DataTemplate
>
<
TextBlock
Text
=
"{Binding Path=name}"
/>
</
DataTemplate
>
</
sdk:AutoCompleteBox.ItemTemplate
>
</
sdk:AutoCompleteBox
>-->
<
sdk:Label
Height
=
"28"
Content
=
"number of time service call"
HorizontalAlignment
=
"Left"
Margin
=
"12,12,0,0"
Name
=
"label1"
VerticalAlignment
=
"Top"
Width
=
"168"
/>
<
sdk:Label
Height
=
"28"
Content
=
"0"
HorizontalAlignment
=
"Left"
Margin
=
"190,12,0,0"
Name
=
"label2"
VerticalAlignment
=
"Top"
Width
=
"120"
/>
<
Button
Content
=
"reset counter"
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"240,8,0,0"
Name
=
"button1"
VerticalAlignment
=
"Top"
Width
=
"121"
Click
=
"button1_Click"
/>
<
sdk:Label
Height
=
"28"
HorizontalAlignment
=
"Left"
Margin
=
"766,252,0,0"
Name
=
"label3"
VerticalAlignment
=
"Top"
Width
=
"120"
/>
<!--<
TextBox
Height
=
"23"
HorizontalAlignment
=
"Left"
Margin
=
"98,32,0,0"
Name
=
"textBox2"
VerticalAlignment
=
"Top"
Width
=
"120"
Text
=
"gogo"
/>
<
my:CustomAutoCompleteBox
Visibility
=
"Collapsed"
Height
=
"25"
HorizontalAlignment
=
"Left"
Text
=
"{Binding name1,Mode=TwoWay}"
ServiceParameters
=
"{Binding Parameters,Mode=TwoWay}"
ServiceContractName
=
" SilverlightApplication1.ServiceReference1.IService1"
MinimumPopulateDelay
=
"1000"
ServiceMethodName
=
"GetRecords"
MinimumPrefixLength
=
"3"
ServiceAbsoluteUri
=
"http://localhost:51595/Service1.svc"
IsTextCompletionEnabled
=
"True"
x:Name
=
"acbCustomerID"
ValueMemberBinding
=
"{Binding Path=name}"
IsMandatory
=
"True"
Width
=
"100"
ValuePropertyName
=
"name"
AllowDrop
=
"False"
Margin
=
"0,20,0,0"
>
<
my:CustomAutoCompleteBox.ItemTemplate
>
<
DataTemplate
>
<
TextBlock
Text
=
"{Binding Path=name}"
/>
</
DataTemplate
>
</
my:CustomAutoCompleteBox.ItemTemplate
>
</
my:CustomAutoCompleteBox
>-->
<
telerik:RadGridView
CanUserSortColumns
=
"False"
EditTriggers
=
"Default,CellClick"
CanUserInsertRows
=
"True"
ShowInsertRow
=
"True"
SelectionUnit
=
"Cell"
ItemsSource
=
"{Binding DbStudents,Mode=TwoWay}"
SelectedItem
=
"{Binding SelectedRecord,Mode=TwoWay}"
HorizontalAlignment
=
"Left"
Margin
=
"407,324,0,0"
Name
=
"radGridView1"
VerticalAlignment
=
"Top"
AutoGenerateColumns
=
"False"
AddingNewDataItem
=
"radGridView1_AddingNewDataItem"
MouseLeftButtonUp
=
"radGridView1_MouseLeftButtonUp"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewColumn
Header
=
"Name"
Width
=
"100"
>
<
telerik:GridViewColumn.CellTemplate
>
<
DataTemplate
>
<
my:CustomAutoCompleteBox
BorderThickness
=
"0"
IsMandatory
=
"True"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Stretch"
Text
=
"{Binding name,Mode=TwoWay}"
ServiceParameters
=
"{Binding Parameters,Mode=TwoWay,Source={StaticResource param}}"
ServiceContractName
=
"SilverlightApplication1.ServiceReference1.IService1"
MinimumPopulateDelay
=
"1000"
ServiceMethodName
=
"GetRecords"
MinimumPrefixLength
=
"3"
ServiceAbsoluteUri
=
"http://localhost:51595/Service1.svc"
IsTextCompletionEnabled
=
"True"
x:Name
=
"acbCustomerID1"
ValueMemberBinding
=
"{Binding Path=name}"
ValuePropertyName
=
"name"
AllowDrop
=
"False"
>
<
my:CustomAutoCompleteBox.ItemTemplate
>
<
DataTemplate
>
<
TextBlock
Text
=
"{Binding Path=name}"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Stretch"
/>
</
DataTemplate
>
</
my:CustomAutoCompleteBox.ItemTemplate
>
</
my:CustomAutoCompleteBox
>
</
DataTemplate
>
</
telerik:GridViewColumn.CellTemplate
>
</
telerik:GridViewColumn
>
<!--<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Name}"
Header
=
"Name1"
>
<
telerik:GridViewDataColumn.CellEditTemplate
>
<
DataTemplate
>
<
my:CustomAutoCompleteBox
BorderThickness
=
"0"
IsMandatory
=
"True"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Stretch"
Text
=
"{Binding name,Mode=TwoWay}"
ServiceParameters
=
"{Binding Parameters,Mode=TwoWay,Source={StaticResource param}}"
ServiceContractName
=
"SilverlightApplication1.ServiceReference1.IService1"
MinimumPopulateDelay
=
"1000"
ServiceMethodName
=
"GetRecords"
MinimumPrefixLength
=
"3"
ServiceAbsoluteUri
=
"http://localhost:51595/Service1.svc"
IsTextCompletionEnabled
=
"True"
x:Name
=
"acbCustomerID2"
ValueMemberBinding
=
"{Binding Path=name}"
ValuePropertyName
=
"name"
AllowDrop
=
"False"
>
<
my:CustomAutoCompleteBox.ItemTemplate
>
<
DataTemplate
>
<
TextBlock
Text
=
"{Binding Path=name}"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Stretch"
/>
</
DataTemplate
>
</
my:CustomAutoCompleteBox.ItemTemplate
>
</
my:CustomAutoCompleteBox
>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellEditTemplate
>
</
telerik:GridViewDataColumn
>-->
<
telerik:GridViewDataColumn
Header
=
"Address"
Width
=
"SizeToHeader"
DataMemberBinding
=
"{Binding address,Mode=TwoWay}"
/>
<
telerik:GridViewDataColumn
Header
=
"Age"
Width
=
"SizeToHeader"
DataMemberBinding
=
"{Binding age,Mode=TwoWay}"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
Grid
>
</
UserControl
>
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Net;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Animation;
using
System.Windows.Shapes;
using
System.ComponentModel;
using
SilverlightApplication1.ServiceReference1;
using
System.Collections.ObjectModel;
using
System.Threading;
using
Telerik.Windows.Controls.GridView;
using
Telerik.Windows.Controls;
namespace
SilverlightApplication1
{
public
partial
class
MainPage : UserControl, INotifyPropertyChanged
{
public
int
counter = 0;
// ServiceReference1.Service1Client svcClient = new ServiceReference1.Service1Client();
public
MainPage()
{
InitializeComponent();
//svcClient.GetRecordsCompleted += new EventHandler<ServiceReference1.GetRecordsCompletedEventArgs>(svcClient_GetRecordsCompleted);
//Parameters = new List<object>() { 1, "AutoText" };
this
.radGridView1.KeyDown +=
new
KeyEventHandler(playersGrid_KeyDown);
this
.Loaded +=
new
RoutedEventHandler(MainPage_Loaded);
}
void
playersGrid_KeyDown(
object
sender, KeyEventArgs e)
{
if
(e.Key == Key.Tab)
{
Thread.Sleep(2000);
var cell = ((TextBox)sender).ParentOfType<GridViewCell>();
//var otherElement = cell.ChildrenOfType<YourControlType>().FirstOrDefault();
MessageBox.Show(
"TAB key is pressed!"
);
}
}
void
MainPage_Loaded(
object
sender, RoutedEventArgs e)
{
LayoutRoot.DataContext =
this
;
}
//private List<object> _Parameters = null;
//public List<object> Parameters
//{
// get
// {
// if (_Parameters == null)
// {
// _Parameters = new List<object>();
// }
// return _Parameters;
// }
// set
// {
// _Parameters = value;
// this.NotifyChanged("Parameters");
// }
//}
public
event
PropertyChangedEventHandler PropertyChanged;
//private bool IsServiceRunning = false;
//private bool IsValidValue = false;
//private bool enterkey = false;
//private bool IsPopUp = false;
//void svcClient_GetRecordsCompleted(object sender, ServiceReference1.GetRecordsCompletedEventArgs e)
//{
// if (e.Result != null)
// {
// autoCompleteBox1.ItemsSource = e.Result;
// autoCompleteBox1.PopulateComplete();
// }
// if (autoCompleteBox1.SelectedItem != null)
// {
// IsValidValue = true;
// if (enterkey)
// {
// this.NextControlFocus();
// }
// IsServiceRunning = false;
// }
// else
// {
// IsPopUp = true;
// ChildWindow1 cw = new ChildWindow1();
// cw.Closed += new EventHandler(cw_Closed);
// cw.Show();
// }
// counter++;
// label2.Content = counter.ToString();
//}
//private void MaintainFocus()
//{
// autoCompleteBox1.Focus();
//}
//public DependencyObject GetElementBasedOnName(DependencyObject startPoint, string elementName)
//{
// DependencyObject returnValue = null;
// if (startPoint != null)
// {
// DependencyObject parent = VisualTreeHelper.GetParent(startPoint);
// if (parent != null)
// {
// FrameworkElement fe = parent as FrameworkElement;
// if (fe != null)
// {
// if (fe.Name == elementName)
// {
// returnValue = fe;
// }
// else
// {
// returnValue = fe.FindName(elementName) as DependencyObject;
// if (returnValue == null)
// returnValue = GetElementBasedOnName(fe, elementName);
// else
// return returnValue;
// }
// }
// else
// {
// returnValue = GetElementBasedOnName(fe, elementName);
// }
// }
// }
// return returnValue;
//}
//private void NextControlFocus()
//{
// Control nextcontrol = this.GetElementBasedOnName(autoCompleteBox1 as DependencyObject, "textBox2") as Control;
// if (nextcontrol != null)
// {
// nextcontrol.Focus();
// }
//}
//void cw_Closed(object sender, EventArgs e)
//{
// this.MaintainFocus();
// IsServiceRunning = false;
//}
//private string _name;
//public string name1
//{
// get { return _name; }
// set
// {
// if (value != null)
// {
// _name = value;
// NotifyChanged("name1");
// }
// }
//}
//private void autoCompleteBox1_Populating(object sender, PopulatingEventArgs e)
//{
// //if (!this.IsServiceRunning && autoCompleteBox1.Text.Length > 0)
// //{
// // IsServiceRunning = true;
// // enterkey = false;
// // e.Cancel = true;
// // svcClient.GetRecordsAsync(1, autoCompleteBox1.Text);
// //}
//}
//private void autoCompleteBox1_GotFocus(object sender, RoutedEventArgs e)
//{
// //if (!IsServiceRunning)
// //{
// // IsValidValue = false;
// // enterkey = false;
// // IsPopUp = false;
// //}
//}
//private void autoCompleteBox1_LostFocus(object sender, RoutedEventArgs e)
//{
// //if ((!IsValidValue || autoCompleteBox1.SelectedItem == null) && !IsPopUp)
// //{
// // this.MaintainFocus();
// // if (!IsServiceRunning && autoCompleteBox1.Text.Length > 0)
// // {
// // enterkey = true;
// // IsServiceRunning = true;
// // svcClient.GetRecordsAsync(1, autoCompleteBox1.Text);
// // }
// //}
//}
public
void
NotifyChanged(
string
property)
{
if
(PropertyChanged !=
null
)
{
PropertyChanged(
this
,
new
PropertyChangedEventArgs(property));
}
}
private
ObservableCollection<Record> _DbStudents=
null
;
public
ObservableCollection<Record> DbStudents
{
get
{
if
(_DbStudents ==
null
)
{
_DbStudents =
this
.GetStudentRecords();
}
return
_DbStudents;
}
set
{
if
(_DbStudents != value)
{
_DbStudents = value;
this
.NotifyChanged(
"DbStudents"
);
}
}
}
private
object
_SelectedRecord;
public
object
SelectedRecord
{
get
{
return
_SelectedRecord; }
set
{
if
(_SelectedRecord != value)
{
_SelectedRecord = value;
this
.NotifyChanged(
"SelectedRecord"
);
}
}
}
public
ObservableCollection<Record> GetStudentRecords()
{
ObservableCollection<Record> r =
new
ObservableCollection<Record>();
return
new
ObservableCollection<Record>() {
new
Record() { name =
"vishwanath"
, address =
"lucknow"
, age = 24 },
new
Record() { name =
"vi"
, address =
"lucknow"
, age = 24 },
new
Record() { name =
"vis"
, address =
"lucknow"
, age = 24 },
new
Record() { name =
"vishwa"
, address =
"lucknow"
, age = 24 },
new
Record() { name =
"vish"
, address =
"bangalore"
, age = 28 } };
}
private
void
button1_Click(
object
sender, RoutedEventArgs e)
{
counter = 0;
label2.Content = counter.ToString();
}
private
void
radGridView1_AddingNewDataItem(
object
sender, Telerik.Windows.Controls.GridView.GridViewAddingNewEventArgs e)
{
//radGridView1.CurrentColumn=radGridView1.Columns[0];
}
private
void
radGridView1_MouseLeftButtonUp(
object
sender, MouseButtonEventArgs e)
{
//var cell = ((TextBox)sender).Parent<GridViewCell>();
var cell = radGridView1.ChildrenOfType<SilverlightApplication1.CustomAutoCompleteBox>().Where(c => c.Name.ToString() ==
"acbCustomerID1"
).FirstOrDefault();
cell.Focus();
//cell.IsInEditMode = true;
}
private
void
RadComboBox_GotFocus(
object
sender, RoutedEventArgs e)
{
(sender
as
RadComboBox).IsDropDownOpen =
true
;
}
}
public
class
PassParameter
{
public
PassParameter()
{
}
private
List<
object
> _Parameters =
null
;
public
List<
object
> Parameters
{
get
{
if
(_Parameters ==
null
)
{
_Parameters =
new
List<
object
>() { 1,
"AutoText"
};
}
return
_Parameters;
}
set
{
_Parameters = value;
}
}
}
}