将每个对象的两个成员绑定到单个ListBox

时间:2013-02-04 16:02:31

标签: wpf binding

我有ListBox绑定到我的自定义租用对象的ObservableCollection,其对象的属性包括startDate和endDate。

但是,我希望ListBox显示表单的每个ListBoxItem

01/01/2001 - 22/12/2012

这是两个绑定属性,中间有一个子串。

如何以这种方式格式化ItemSource的输出?我理解DisplayMemberPath指向我想要的属性,但我需要两个DisplayMemberPaths,对吧?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以制作自定义ItemTemplate以实现此外观:

<ListBox ItemsSource="{Binding MyItems}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <Run Text="{Binding StartDate}"/><Run Text=" - " /><Run Text="{Binding EndDate}" />
            </TextBlock>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

答案 1 :(得分:0)

DisplayMemberPath只是一种快捷方式,可以说ItemTemplate只是一个TextBlock,其文本绑定到DisplayMemberPath项。

如果您希望ItemTemplate更详细,可以覆盖ItemTemplate属性。

例如,

<ListBox.ItemTemplate>
    <DataTemplate>
        <TextBox>
            <TextBlock.Text>
                <MultiBinding StringFormat="{0:M/d/yy} - {1:M/d/yy}">
                    <Binding Path="StartDate " />
                    <Binding Path="EndDate" />
                 </MultiBinding>
             </TextBlock.Text>
        </TextBox>
    </DataTemplate>
</ListBox.ItemTemplate>