带有字典的列表视图

ListView with Dictionary

您好,我正在寻找一种将列表视图与字典一起使用的方法。

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>();

我的字典是这样的。

lvUsers.ItemsSource = Order_CONTROLS.ServiceData;

这就是我将数据分配给列表视图的方式 和 lvUsers 列表视图:

<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>

问题是它不会将数据打印到只有正确的项目,只有行数是正确的,但没有数据输出,任何人都可以告诉我做错了什么,如果可能的话不使用 LIST(T)?

解决方案是将 Values Collection 设置为 ListView 的 ItemsSource:

lvUsers.ItemsSource = Order_CONTROLS.ServiceData.Values;

还请记住,Dictionary 不可观察 -> INotifyCollectionChanged 和 INotifyPropertyChanged 接口未实现。

因此,如果您向字典添加新元素,您的视图将不会看到此更改。