Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF数据模板和绑定-在xaml中是否可能?_Wpf_Xaml_Wpf Controls_Binding - Fatal编程技术网

WPF数据模板和绑定-在xaml中是否可能?

WPF数据模板和绑定-在xaml中是否可能?,wpf,xaml,wpf-controls,binding,Wpf,Xaml,Wpf Controls,Binding,我正在对列表框的ItemSource进行数据模板化,以显示一系列组合框。我想将组合的DisplayMemberPath指定给一个属性,该属性的源与它自己的ItemsSource不同。(假设DisplayMemberPath只是一个表示属性名称的字符串,我是从用户那里得到的)。我用CollectionViewSource实现了这一点,但是所有的组合框都显示相同的列表 在数据模板化之后,我希望能够显示组合框 ComboboxInstance1.DisplayMemberPath = Propert

我正在对列表框的
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
}
列出过滤器控件;
列出雇员名单
类过滤器
{
字符串标题;
字符串属性mapofemployee
}


我不确定您能否在XAML中实现这一点。(DisplayMemberPath指向DataContext以外的对象上的属性)。您可能想查看一下,看看这是否能满足您的需求


您是否考虑过在Employee对象中提供对FilterElement的引用,然后连接到您创建的Employee.PropertyMapOfEmployee属性的绑定?

我不确定您是否可以在XAML中这样做。(DisplayMemberPath指向DataContext以外的对象上的属性)。您可能想查看一下,看看这是否能满足您的需求


您是否考虑过在Employee对象中提供对FilterElement的引用,然后连接到您创建的Employee.PropertyMapOfEmployee属性的绑定?

我不认为PropertyMapOfEmployee是Employee类上的属性,所以我认为这不会起作用。谢谢。。这实际上修复了原始问题和当前问题。这是因为PropertyMapOfEmployee是绑定到列表框(datatemplated)的FilterControl的一个属性。因此,组合绑定始终引用父对象,除非在绑定中使用“Source=”专门设置。因此它是有效的。@Dave,Employee对象不是ComboBox的DataContext,而是ComboBoxItem的DataContext…我认为PropertyMapOfEmployee不是Employee类的属性,所以我认为这不起作用。谢谢。。这实际上修复了原始问题和当前问题。这是因为PropertyMapOfEmployee是绑定到列表框(datatemplated)的FilterControl的一个属性。因此,组合绑定始终引用父对象,除非在绑定中使用“Source=”专门设置。因此它是有效的。@Dave,Employee对象不是ComboBox的DataContext,而是ComboBoxItem的DataContext。。。
<ComboBox ItemsSource="{Binding Source={StaticResource bindingEmp}"
          DisplayMemberPath="{Binding PropertyMapofEmployee}" />