WPF DataTemplate和Binding

时间:2010-09-23 17:15:32

标签: wpf wpf-controls binding

我是DataTemplating列表框的itemsource来显示标签和组合框。在,datatemplate我将一个新的itemssource分配给组合框但是无法让它工作。

或者理想情况下,如何将datatemplate中的组合框绑定到不同的源。

感谢。摩尼

用户控件:

<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>

视图模型:

List<FilterElement> FilterControls;
List<Employee> Employees

Class FilterElement 
{
string Caption;
}

class Employee
{
string Sex;
}

1 个答案:

答案 0 :(得分:3)

在你的组合框中,你绑定到当前数据上下文中的Employees,它将是一个FilterElement对象 - 没有要绑定的Employees属性。

在绑定中,您可能希望将Source=设置为其他内容,这会覆盖您的datacontext

有很多方法可以设置这个简单的方法(无论如何很容易放在这里)将一个collectionViewSource添加到你的窗口/控件的资源(我把Whatever.Resources - 它可以进去几乎所有含元素)

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

然后在你的datatemplate

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

请注意,使用CollectionViewSource也可以在xaml中进行排序/分组。