如何使用 DisplayMemberPath 在特定列中显示项目

Moh*_*nde 2 c# wpf xaml listview

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

lvwFill.ItemsSource = assignments.ListAssignments(); //Returns a List<Assignments>
Run Code Online (Sandbox Code Playgroud)

所以现在我的 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>
Run Code Online (Sandbox Code Playgroud)

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

Ara*_*and 5

像这样使用 DisplayMemberBinding

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

          <GridViewColumn
             Header="Due"
             DisplayMemberBinding="{Binding Path=Due}" />
Run Code Online (Sandbox Code Playgroud)

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

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

        <GridViewColumn
            Header="Due">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Due, StringFormat={}{0:MM/dd/yyyy}}" />
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
Run Code Online (Sandbox Code Playgroud)