作为一个例子......假设您有一个客户列表,您希望在您的自动完成框中显示他们的名字。此外,您的网格应显示所有客户,并且在自动完成框中选择名称时,将显示网格的选定项目。
你需要做的就是绑定RadGridView的SelectedItem属性AutoCompleteBox的&。我会做的是AutoCompleteBox绑定到一个名为SelectedName属性,比如:在“模式=双向”
<input:AutoCompleteBox ItemsSource="{Binding Names}" SelectedItem="{Binding SelectedName, Mode=TwoWay}" />
重点 - 这就是将提醒你的代码背后的UI已经改变。
在后面的代码,你会创建一个这样的属性:
private string selectedName;
public string SelectedName
{
get { return selectedName; }
set
{
if (value != null)
{
var query = (from c in CustomersList
where (c.Name == value)
select c).FirstOrDefault();
SelectedCustomer = (Customer)query;
selectedName = value;
}
}
}
注意如何,当你设置SelectedName,你使用LINQ来确定选择哪些客户的。这里的一个缺点是,如果你在一个列表中有多个名字......这个代码只选择第一个。如果这是一个问题,你应该重新考虑你的架构..
然后为网格,则可以将绑定的SelectedItem像这样:
<telerik:RadGridView
....
SelectedItem={Binding SelectedCustomer, Mode=TwoWay"}
....
</telerik:RadGridView>
在后面的代码中,你会创建这个属性:
private Customers selectedCustomer;
public Customers SelectedCustomer
{
get { return selectedCustomer; }
set {
selectedCustomer = value;
MyGridView.SelectedItem = selectedCustomer;
}
}
这样的事情应该让你开始。
SS
自动完成Telerik控件还是使用工具包自动完成? – 2011-05-05 14:22:54
他正在使用工具包自动完成功能。 [见这里](http://stackoverflow.com/questions/5871918/using-autocomplete-box-in-silverlight/5872254#5872254) – 2011-05-05 16:28:21