C# Listview DisplayMemberBinding 显示 "wrong" 值
C# Listview DisplayMemberBinding shows "wrong" value
在我的 WPF 应用程序中,我有一个 Listview,其中包含几列和一列,其中包含一个复选框。
xaml如下:
<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" 包含正确的数据。但是,带有复选框 ("Check") 的列在将其添加到列表后始终显示未选中的复选框。数据是正确的,该列只是显示错误的数据。我可以修改列表中的复选框,它会更新数据,这很好。但是列表应该在将元素添加到列表后立即包含正确的数据,但它没有这样做。
如果知道为什么 3 列是正确的而复选框不起作用,那将是非常有趣的。
将 public bool MarkedForCheck = true;
更改为 public bool MarkedForCheck {get;set;}
在我的 WPF 应用程序中,我有一个 Listview,其中包含几列和一列,其中包含一个复选框。
xaml如下:
<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" 包含正确的数据。但是,带有复选框 ("Check") 的列在将其添加到列表后始终显示未选中的复选框。数据是正确的,该列只是显示错误的数据。我可以修改列表中的复选框,它会更新数据,这很好。但是列表应该在将元素添加到列表后立即包含正确的数据,但它没有这样做。
如果知道为什么 3 列是正确的而复选框不起作用,那将是非常有趣的。
将 public bool MarkedForCheck = true;
更改为 public bool MarkedForCheck {get;set;}