C# 带字典的列表视图
您好,我正在寻找一种将listview与Dictionary结合使用的方法C# 带字典的列表视图,c#,wpf,listview,dictionary,listviewitem,C#,Wpf,Listview,Dictionary,Listviewitem,您好,我正在寻找一种将listview与Dictionary结合使用的方法 public class ServiceDataObject : IEquatable<ServiceDataObject> { public int ServiceID { get; set; } public string ServiceName { get; set; } public bool Status { get; set; } public string Reccome
public class ServiceDataObject : IEquatable<ServiceDataObject>
{
public int ServiceID { get; set; }
public string ServiceName { get; set; }
public bool Status { get; set; }
public string ReccomendedStatus { get; set; }
public string WhoMade { get; set; }
public bool Equals(ServiceDataObject other)
{
if (other == null) return false;
return (this.ServiceID.Equals(other.ServiceID));
}
}
public static Dictionary<int, ServiceDataObject> ServiceData = new Dictionary<int, ServiceDataObject>();
这就是我将数据分配给listview的方式
和LV用户列表视图:
<ListView Margin="10" Name="lvUsers">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<RadioButton IsChecked="{Binding Status}" GroupName="{Binding ServiceName}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<DataTemplate.Resources>
<local:InvertBooleanConverter x:Key="InvertBooleanConverter" />
</DataTemplate.Resources>
<RadioButton IsChecked="{Binding Status, Converter={StaticResource InvertBooleanConverter}}" GroupName="{Binding ServiceName}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Reccomendation" Width="120" DisplayMemberBinding="{Binding ReccomendedStatus}" />
<GridViewColumn Header="Description" Width="50" DisplayMemberBinding="{Binding ServiceName}" />
</GridView>
</ListView.View>
问题是,它不会将数据打印到仅正确的项目,只有行数正确,但没有数据输出,有人能告诉我哪里做错了吗?如果可能,不使用列表(T)?解决方案是将值设置为集合到ListView的项目源:
lvUsers.ItemsSource = Order_CONTROLS.ServiceData.Values;
还要记住,字典是不可见的->INotifyCollectionChanged&INotifyPropertyChanged接口没有实现
因此,如果向字典中添加新元素,视图将不会看到此更改 尝试lvUsers.ItemsSource=Order\u CONTROLS.ServiceData.Values;还要记住,字典是看不见的,它是有效的。谢谢你,我希望我能把你的评论作为答案。太好了!我加上它作为答案。记住接受它。如何理解它是不可见的?这意味着它没有实现INotifyCollectionChanged和INotifyPropertyChanged接口,例如,如果将新元素添加到词典中,视图将不会收到此新元素添加的通知。这意味着如果数据发生更改,则不会被注意到?这意味着如果将元素添加到词典中,视图将不会看到此新元素,因为不会触发CollectionChanged事件。如果您打算修改或执行类似操作,字典不是您的最佳选择。这不是问题,因为listview中的数据是用于阅读的。对于将来的使用,解决方法是什么?
lvUsers.ItemsSource = Order_CONTROLS.ServiceData.Values;