作爲一個例子......假設您有一個客戶列表,您希望在您的自動完成框中顯示他們的名字。此外,您的網格應顯示所有客戶,並且在自動完成框中選擇名稱時,將顯示網格的選定項目。
你需要做的就是綁定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