【问题标题】:How to use DisplayMemberPath to show an item in a specific column如何使用 DisplayMemberPath 在特定列中显示项目
【发布时间】:2010-01-26 22:56:16
【问题描述】:

我有一个带有多个 GridViewColumns(标题、开始、到期)的 ListView。那么如何将对象与字符串 Title、datetime Start 和 datetime Due 绑定。在程序代码中我已经说过:

lvwFill.ItemsSource = assignments.ListAssignments(); //Returns a List<Assignments>

所以现在我的 XAML 是:

            <ListView x:Name="lvwFill">
            <ListView.View>
                <GridView>
                    <GridViewColumn x:Name="TitleColumn" Header="Title"  Width="125" />
                    <GridViewColumn x:Name="DueColumn" Header="Due"  Width="75" />
                    <!-- ... -->
                </GridView>
            </ListView.View>
        </ListView>

那么我怎样才能列出每个作业并且只显示某些信息,例如 assignment.Title 或 assignment.Due?

【问题讨论】:

    标签: c# wpf xaml listview


    【解决方案1】:

    像这样使用 DisplayMemberBinding

              <GridViewColumn
                 Header="Title"
                 DisplayMemberBinding="{Binding Path=Title}" />
    
              <GridViewColumn
                 Header="Due"
                 DisplayMemberBinding="{Binding Path=Due}" />
    

    假设您已绑定到具有 Title 和 Due 属性的作业列表。

    如果您希望拥有复杂的值类型(不是字符串),请使用 CellTemplate,它允许您使用数据模板,以便您可以格式化/转换为您心中的内容

            <GridViewColumn
                Header="Due">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Due, StringFormat={}{0:MM/dd/yyyy}}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
    

    【讨论】:

    • 我也可以格式化吗?就像我有一个代表枚举的 int Kind 一样。我试图显示枚举 Kind 的值,并将其作为 int 传递。我需要转换器吗?
    猜你喜欢
    • 2019-06-15
    • 2013-01-05
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 2020-06-04
    • 1970-01-01
    • 2019-10-21
    相关资源
    最近更新 更多