void CheckDevicesGroup(object selectedDestinationOSDevicesGroup)
        {
            DestinationOSDevicesGroup destinationOSDevicesGroup = GroupedDevices.Where(d => d.DeviceClass == (string)selectedDestinationOSDevicesGroup).FirstOrDefault();

            if (destinationOSDevicesGroup != null)
            {
                foreach (DestinationOSDeviceInfo item in destinationOSDevicesGroup.Drivers)
                {
                    item.SelectedForInstall = destinationOSDevicesGroup.GroupChecked;
                }
            }
        }
        void CheckDevice(object selectedDevice)
        {
            DestinationOSDeviceInfo device = allDrivers.DownloadedDestinationOSDrivers.Where(d => d.Id == (string)selectedDevice).FirstOrDefault();

            if (device != null)
            {
                DestinationOSDevicesGroup destinationOSDevicesGroup = GroupedDevices.Where(d => d.DeviceClass == device.DeviceClass).FirstOrDefault();
                if (destinationOSDevicesGroup != null && destinationOSDevicesGroup.Drivers.Where(d => d.SelectedForInstall).Count() == 0)
                {
                    destinationOSDevicesGroup.GroupChecked = false;
                }
                else
                {
                    if (destinationOSDevicesGroup != null && destinationOSDevicesGroup.Drivers.Where(d => d.SelectedForInstall == false).Count() == 0)
                    {
                        destinationOSDevicesGroup.GroupChecked = true;
                    }
                }
            }
        }
        void UpdateGroupedDevices()
        {
            foreach (DestinationOSDeviceInfo driver in allDrivers.DownloadedDestinationOSDrivers)
            {
                DestinationOSDevicesGroup destinationOSDevicesGroup = GroupedDevices.Where(g => g.DeviceClass == driver.DeviceClass).FirstOrDefault();
                if (destinationOSDevicesGroup == null)
                {
                    GroupedDevices.Add(new DestinationOSDevicesGroup(driver.DeviceClass, driver.DeviceClassName, driver.DeviceClassImageSmall, new List <DestinationOSDeviceInfo> {
                        driver
                    }));
                }
                else
                {
                    destinationOSDevicesGroup.Drivers.Add(driver);
                }
            }

            OrderedDeviceGroups = CollectionViewSource.GetDefaultView(GroupedDevices);
            OrderedDeviceGroups.SortDescriptions.Clear();
            OrderedDeviceGroups.SortDescriptions.Add(new SortDescription("Order", ListSortDirection.Ascending));
            OrderedDeviceGroups.Refresh();
        }