我正在DataTemplating列表框的ItemSource
以显示一系列组合框。我想将一个组合的DisplayMemberPath
提供给一个属性,该属性与其自己的ItemsSource
源不同。 (假设DisplayMemberPath
只是一个表示属性名称的字符串,我从用户那里得到这个)。我用CollectionViewSource
实现了这一点,但所有组合框都显示相同的列表。
我希望在数据模板化后显示组合框,
ComboboxInstance1.DisplayMemberPath = PropertyMapOfEmployee in FilterControls[0]
ComboboxInstance2.DisplayMemberPath = PropertyMapOfEmployee in FilterControls[1]
这可以在XAML中实现吗?
感谢。摩尼
用户控件:
<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>
视图模型:
List<FilterElement> FilterControls;
List<Employee> Employees
class FilterElement
{
string Caption;
String PropertyMapofEmployee
}
答案 0 :(得分:3)
<ComboBox ItemsSource="{Binding Source={StaticResource bindingEmp}"
DisplayMemberPath="{Binding PropertyMapofEmployee}" />
答案 1 :(得分:0)
我不确定你能否在XAML中做到这一点。 (将DisplayMemberPath指向位于DataContext以外的对象上的属性)。您可能需要查看RelativeSource Class,看看是否符合您的需求。
您是否考虑过将Employee对象中的引用提供给FilterElement,然后连接到您创建的Employee.PropertyMapOfEmployee属性的绑定?