首页 > 解决方案 > XAML GridViewColumn DisplayMemberBinding 似乎不起作用

问题描述

我正在尝试使用数据绑定创建一个两列 ListView。XAML 如下所示:

<ListView x:Name="BookingVariantsListView" ItemsSource="{Binding BookingVariants}" SelectionChanged="BookingVariantsListView_SelectionChanged" DockPanel.Dock="Top" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Top">
    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridView.Columns>
                <GridViewColumn Header="{x:Static loc:Settings.VariantTitle}" DisplayMemberBinding="{Binding Title}" Width="320" />
                <GridViewColumn Header="{x:Static loc:Settings.VariantLink}" DisplayMemberBinding="{Binding BookingVariantURL}" Width="315" />
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

和这样的模型:

public class BookingVariant
{

    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("booking_variant_url")]
    public string BookingVariantURL { get; set; }

}

它保存在一个列表中:

public ObservableCollection<BookingVariant> BookingVariants { get; private set; }

现在列表绑定似乎起作用了,因为它填充了正确的行数。但列未填充。相反,每一行只显示一次类的名称。这些列看起来完全被忽略了。

有人有想法吗?谢谢!

编辑:

Listview 目前看起来像这样: 当前有故障的列表视图行

标签: c#wpfxamllistviewgridview

解决方案


我发现了我的错误:

在我的窗口顶部,我正在导入另一个 XAML 文件,其中包含该窗口中其他控件的样式信息(以及列表视图)。删除文件时,Gridview 绑定按预期工作。所以我自己的风格会覆盖行为。我现在将为所有样式分配键,这样它们就不会被自动使用。


推荐阅读