使用WPF连接数据绑定ListBox中的字段

时间:2009-07-30 14:22:36

标签: c# .net wpf listbox

首先我要说的是,我是WPF和LINQ的新手,并且在工作中使用它时一直在努力学习它(不要讨厌必须动态学习东西并完成在截止日期之前完成项目!)。无论如何,我有一个雇员列表框,它被绑定在ObservableCollection的代码后面。该集合的数据源是一个类型为IQueryable的LINQ查询。

我要做的是在列表框中显示LastName +“,”+ FirstName格式,我不知道如何解决这个问题。它只是用于显示,不会以任何方式影响数据。我已经尝试使用LINQ的select新语法,但是,它不起作用,因为查询返回IQueryable并且该字段不属于Employee。列表框中的对象需要是Employee对象,因为它们可以出于不同的原因保存回数据库或移动到表单中的其他列表框。

我不知道该去哪里,如果我不清楚,我很抱歉。如果您对我需要做的事情有任何疑问,请随时提出,我会尽力回答。谢谢!

2 个答案:

答案 0 :(得分:2)

您可以轻松地执行多重绑定和StringFormat,并且可视化成本更低。 在你的ListBox

   <ListBox ItemsSource="{Binding EmployeeCollection}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock >
                    <TextBlock.Text >
                        <MultiBinding StringFormat=" {0},{1} ">
                          <Binding Path="LastName" />
                          <Binding Path="FirstName" />
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
             </DataTemplate>
         </ListBox.ItemTemplate>
    </ListBox>

答案 1 :(得分:1)

假设您有ObservableCollection<Employee>,其中Employee是具有LastNameFirstName属性的类型,则此类内容应该有效:

<ListBox ItemSource="{Binding Employees}">
    <ListBox.Resources>
        <DataTemplate TargetType="{x:Type local:Employee}">
            <StackPanel>
                <TextBlock Text="{Binding Path=LastName}" />
                <TextBlock Text=", " />
                <TextBlock Text="{Binding Path=FirstName}" />
            <StackPanel>
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

ListBox尝试显示其项目,但Employee不是UIElement,因此它会搜索描述该类型表示的模板。 DataTemplate的资源中嵌入了ListBox就可以了。