【问题标题】:C# Listview DisplayMemberBinding shows "wrong" valueC# Listview DisplayMemberBinding 显示“错误”值
【发布时间】:2015-01-06 17:06:44
【问题描述】:

在我的 WPF 应用程序中,我有一个 Listview,其中包含几列和一列,其中包含一个复选框。
xml如下:

<ListView x:Name="listviewImported">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Check" Width="50">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
 /*This line may be the prob.*/     <CheckBox IsChecked="{Binding MarkedForCheck}" />
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="Pos." Width="75" DisplayMemberBinding="{Binding PositionAsString}" />
                        <GridViewColumn Header="Value" Width="175" DisplayMemberBinding="{Binding ImportValue}" />
                        <GridViewColumn Header="Type" Width="175" DisplayMemberBinding="{Binding ImportValueTypeDescription}" />
                    </GridView>
                </ListView.View>
            </ListView>

ItemSource 是这样分配的:

        listviewImported.ItemsSource = _catalog.ImportedList;

_catalog 中的 ImportedList 是 ImportedElem 类型:

    private List<ImportedElem> _importedList = new List<ImportedElem>();

这是 ImportedElem 类:

public class ImportedElem : BaseElem {

        public ImportedElem(int Position, string ImportValue) : base(Position, ImportValue) {
        }

        //MARKED FOR CHECK
        public bool MarkedForCheck = true;
    }

这是问题所在:
当我将 ImportedElem 添加到列表时,Listview 将更新,并且列“Pos.”、“Value”和“Type”包含正确的数据。但是,带有复选框(“检查”)的列在将其添加到列表后始终显示未选中的复选框。数据是正确的,该列只是显示了错误的数据。我可以修改列表中的复选框,它会更新数据,这很好。但是列表应该在将元素添加到列表后立即包含正确的数据,但它没有这样做。

知道为什么 3 列是正确的而复选框不起作用会很有趣。

【问题讨论】:

  • 绑定看起来不错。我的猜测是,因为 MarkedForCheck 是在构造函数之外初始化的。也许尝试在正确显示的字符串的同时初始化它?
  • @hSchroedl 我实际上是这样做的。我只是在这里删除了它,因为它似乎不相关。

标签: c# wpf listview checkbox


【解决方案1】:

public bool MarkedForCheck = true;更改为public bool MarkedForCheck {get;set;}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2011-02-22
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多