例如...假设您有一个客户列表,您希望在自动完成框中显示他们的姓名。此外,您的网格应显示所有客户,并且当在自动完成框中选择名称时,将显示网格的选定项。
您需要做的是绑定 RadGridView & AutoCompleteBox 的 SelectedItem 属性。我要做的是将 AutoCompleteBox 绑定到名为 SelectedName 的属性,如下所示:
<input:AutoCompleteBox ItemsSource="{Binding Names}" SelectedItem="{Binding SelectedName, Mode=TwoWay}" />
强调“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