В качестве примера ... скажем, у вас есть список клиентов, из которых вы хотите отобразить их имена в поле автозаполнения. Кроме того, ваша таблица должна отображать всех клиентов, и когда в поле «Автозаполнение» выбрано «Имя», отображается элемент «Выбранные» таблицы.
То, что вам нужно сделать, это связать свойство SelectedItem в RadGridView & AutoCompleteBox. Что бы я сделал, это связал AutoCompleteBox со свойством SelectedName, например так:
<input:AutoCompleteBox ItemsSource="{Binding Names}" SelectedItem="{Binding SelectedName, Mode=TwoWay}" />
Акцент на Mode = TwoWay - это то, что предупредит ваш код об изменении пользовательского интерфейса.
В своем коде вы должны создать такие свойства:
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