WPF DataTemplate и Binding - возможно ли это в xaml? - PullRequest
0 голосов
/ 23 сентября 2010

Я использую DataTemplating для списка ItemSource, чтобы отобразить серию комбинированных списков.Я хочу передать DisplayMemberPath комбо свойству, которое находится в другом источнике, чем его собственный ItemsSource.(Предполагая, что DisplayMemberPath это просто строка, представляющая имя свойства, я получаю это от пользователя).Я достиг этого с CollectionViewSource, но все списки отображаются в одном списке.

То, что я ожидаю получить после шаблонизации данных, - это отображение комбинированных списков,

ComboboxInstance1.DisplayMemberPath =  PropertyMapOfEmployee in FilterControls[0]
ComboboxInstance2.DisplayMemberPath =  PropertyMapOfEmployee in FilterControls[1]

Этого можно добиться в XAML?

Спасибо.Mani

Контроль пользователя:

<Resources>
    <CollectionViewSource x:Key="bindingSource" Source="{Binding BindingItems}"/>
    <CollectionViewSource x:Key="FilterSource" Source="{Binding FilterControls}"/>

    <DataTemplate DataType="{x:Type CustomTypes:FilterElement}">
        <ComboBox ItemsSource="{Binding Source={StaticResource bindingEmp}" 
              DisplayMemberPath="{Binding Source={StaticResource FilterSource}, 
                                            Path=PropertyMapofEmployee}" />
    </DataTemplate>

<Resources>

 ---

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

ViewModel:

List<FilterElement> FilterControls;
List<Employee> Employees

class FilterElement 
{
    string Caption;
    String PropertyMapofEmployee
}

Ответы [ 2 ]

3 голосов
/ 23 сентября 2010
<ComboBox ItemsSource="{Binding Source={StaticResource bindingEmp}"
          DisplayMemberPath="{Binding PropertyMapofEmployee}" />
0 голосов
/ 23 сентября 2010

Я не уверен, что вы можете сделать это в XAML. (Наличие DisplayMemberPath указывает на свойство, которое находится на объекте, отличном от DataContext). Возможно, вы захотите взглянуть на RelativeSource Class , чтобы узнать, отвечает ли это вашим потребностям.

Задумывались ли вы о предоставлении ссылки в объекте Employee на FilterElement, а затем о привязке к привязке созданного вами свойства Employee.PropertyMapOfEmployee?

...