using Microsoft.Maui.Controls; namespace CommanderApp; public static class PanelCollectionView { public static DataTemplate CreateItemTemplate(bool isLeftPanel, MainPage page) { return new DataTemplate(() => { var button = new Button { Padding = new Thickness(15, 8, 5, 8), // left, top, right, bottom HeightRequest = 40, BackgroundColor = Colors.Transparent, BorderWidth = 0, HorizontalOptions = LayoutOptions.Fill, }; // Устанавливаем тематический цвет текста button.SetAppThemeColor(Button.TextColorProperty, Colors.Black, Colors.White); button.SetBinding(Button.TextProperty, new Binding("DisplayText")); button.SetBinding(Button.CommandParameterProperty, new Binding(".")); // Обработчик нажатия button.Clicked += (s, e) => { if (s is Button btn && btn.CommandParameter is FileSystemItem item) { page.HandleItemClick(item, isLeftPanel); } }; // Визуальные состояния для фокуса var visualStateGroups = new VisualStateGroupList(); var commonStates = new VisualStateGroup { Name = "CommonStates" }; var normalState = new VisualState { Name = "Normal" }; var focusedState = new VisualState { Name = "Focused" }; focusedState.Setters.Add(new Setter { Property = Button.BorderColorProperty, Value = Colors.Blue }); focusedState.Setters.Add(new Setter { Property = Button.BorderWidthProperty, Value = 2 }); var pressedState = new VisualState { Name = "Pressed" }; pressedState.Setters.Add(new Setter { Property = Button.BackgroundColorProperty, Value = Color.FromArgb("#e0e0e0") }); commonStates.States.Add(normalState); commonStates.States.Add(focusedState); //commonStates.States.Add(pressedState); visualStateGroups.Add(commonStates); VisualStateManager.SetVisualStateGroups(button, visualStateGroups); return button; }); } }