using Microsoft.UI.Xaml; using Microsoft.UI.Xaml.Media; using Windows.UI; namespace Lattice.UI.DragDrop.WinUI.Helpers; /// /// Вспомогательный класс для работы с ресурсами. /// public static class ResourceHelper { /// /// Инициализирует ресурсы перетаскивания. /// public static void InitializeDragDropResources() { // Загружаем Generic.xaml, если он еще не загружен var resourceDictionary = new ResourceDictionary(); // В реальном приложении нужно загружать из правильного пути try { resourceDictionary.Source = new System.Uri("ms-appx:///Lattice.UI.DragDrop.WinUI/Themes/Generic.xaml"); Application.Current.Resources.MergedDictionaries.Add(resourceDictionary); } catch { // Если не удалось загрузить из файла, создаем базовые ресурсы CreateFallbackResources(); } } private static void CreateFallbackResources() { var resources = Application.Current.Resources; // Базовые кисти для визуальной обратной связи if (!resources.ContainsKey("DragOverBackgroundBrush")) { resources["DragOverBackgroundBrush"] = new SolidColorBrush( Color.FromArgb(76, 0, 120, 215)); // 30% opacity } if (!resources.ContainsKey("DragOverBorderBrush")) { resources["DragOverBorderBrush"] = new SolidColorBrush( Color.FromArgb(255, 0, 120, 215)); } if (!resources.ContainsKey("DropValidBrush")) { resources["DropValidBrush"] = new SolidColorBrush( Color.FromArgb(255, 0, 204, 0)); } if (!resources.ContainsKey("DropInvalidBrush")) { resources["DropInvalidBrush"] = new SolidColorBrush( Color.FromArgb(255, 255, 0, 0)); } } /// /// Получает стиль из ресурсов. /// public static Style? GetStyle(string styleKey) { if (Application.Current.Resources.TryGetValue(styleKey, out var style) && style is Style) { return style as Style; } return null; } /// /// Получает кисть из ресурсов. /// public static Brush? GetBrush(string brushKey) { if (Application.Current.Resources.TryGetValue(brushKey, out var brush) && brush is Brush) { return brush as Brush; } return null; } /// /// Добавляет или обновляет ресурс. /// public static void SetResource(string key, object value) { Application.Current.Resources[key] = value; } /// /// Проверяет существование ресурса. /// public static bool HasResource(string key) { return Application.Current.Resources.ContainsKey(key); } }