Шаблон данных WPF и привязка - PullRequest
1 голос
/ 23 сентября 2010

Я использую DataTempling в качестве источника элементов списка для отображения метки и комбинированного списка. В табличке с данными я назначаю новый источник элементов для комбинированного списка, но не могу заставить его работать.

Или, в идеале, как я могу связать выпадающий список в табличке данных с другим источником.

Спасибо. Mani

UserControl:

<DockPanel>
        <ListBox x:Name="lstBox" ItemsSource="{Binding FilterControls}" />
</DockPanel>

 <!--DataTemplate For SearchElement Type-->
<DataTemplate DataType="{x:Type CustomTypes:FilterElement}">
  <Label> Text </Label>
  *<ComboBox  ItemsSource="{Binding Employees}"DisplayMemberPath="Sex" />*
</DataTemplate>

ViewModel:

List<FilterElement> FilterControls;
List<Employee> Employees

Class FilterElement 
{
string Caption;
}

class Employee
{
string Sex;
}

1 Ответ

3 голосов
/ 23 сентября 2010

В вашем комбинированном ящике вы привязываетесь к Employees в текущем контексте данных, который будет объектом FilterElement - без свойства Employees для привязки.

В привязке вы, вероятно, захотите установить Source= к чему-то еще, что переопределяет ваш текст данных

Существует множество способов настроить этот простой способ сделать это (в любом случае, его легко разместить здесь) - добавить collectionViewSource к ресурсам вашего окна./ control (я ставлю Whothing.Resources - он может входить почти в любой содержащий элемент)

<Whatever.Resources>
  <CollectionViewSource x:Key="employeeSource" Source="{Binding Employees}">
</Whatever.Resources>

Затем в вашей таблице данных

<ComboBox ItemsSource={Binding Source={StaticResource employeeSource}}" ... />

Обратите внимание, что использование CollectionViewSource позволит вам сделатьсортировать / группировать также в xaml.

...