У меня есть простой пользовательский элемент управления, который, по сути, представляет собой просто AutoCompleteBox с некоторой настраиваемой логикой.
Для конкретного экземпляра (набора персон) я хочу, чтобы он выглядел следующим образом:
<sdk:AutoCompleteBox Name="myACB" ItemsSource="{Binding People}" FilterMode="StartsWith" MinimumPrefixLength="2" ValueMemberBinding={Binding LastName}>
<sdk:AutoCompleteBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding LastName}" />
</DataTemplate>
</sdk:AutoCompleteBox.ItemTemplate>
</sdk:AutoCompleteBox>
Однако я хочу сделать источник данных универсальным, и поэтому отображаемые значения будут другими (ValueMemberBinding и текст TextBlock шаблона).Вот почему я делаю пользовательский элемент управления, чтобы я мог указать различия со свойствами.
У меня нет проблем при настройке источника со свойством пользовательского элемента управления, но у меня возникают проблемы со свойствами привязки дисплея.Сейчас у меня есть:
public static DependencyProperty DisplayMemberProperty = DependencyProperty.Register("DisplayMember", typeof(string), typeof(myAutoComplete), null);
public string DisplayMember
{
get
{ return myACB.ValueMemberPath; }
set
{
myACB.ValueMemberPath = value; // this works fine
// but how can set the text binding for the templated textblock?
}
}
Я хочу, чтобы свойство DisplayMember было именем свойства, которое будет отображаться для любого вида пользовательской коллекции (людей, автомобилей и т. Д.), Которую я связал с AutoCompleteBox.
Я не думаю, что смогу изменить таблицу данных программно.Есть ли способ сделать это с помощью привязки (относительный источник)?