Repositories / GSConfigTool / GsConfigTool / Views / ProjectsPage.xaml.cs
ProjectsPage.xaml.cs 1.3 KB
git clone https://rl-dev.de/git/gsconfigtool Raw Download
using GsConfigTool.Models;
using GsConfigTool.ViewModels;
using System.Collections.Specialized;
using System.Windows;
using System.Windows.Controls;

namespace GsConfigTool.Views;

public partial class ProjectsPage : UserControl
{
    public ProjectsPage()
    {
        InitializeComponent();
        DataContextChanged += OnDataContextChanged;
    }

    private void OnDataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        if (e.NewValue is ProjectsViewModel vm)
        {
            vm.Projects.CollectionChanged += (_, _) => UpdateEmptyState(vm);
            vm.PropertyChanged += (_, args) =>
            {
                if (args.PropertyName == nameof(ProjectsViewModel.Projects))
                    UpdateEmptyState(vm);
            };
            UpdateEmptyState(vm);
        }
    }

    private void UpdateEmptyState(ProjectsViewModel vm)
    {
        if (EmptyState != null)
            EmptyState.Visibility = vm.Projects.Count == 0 ? Visibility.Visible : Visibility.Collapsed;
    }

    private void OpenProject_Click(object sender, RoutedEventArgs e)
    {
        if (sender is Button btn && btn.Tag is ServerProject project)
        {
            var main = Application.Current.MainWindow?.DataContext as MainViewModel;
            main?.OpenProject(project);
        }
    }
}
24Fire Wuppertaler Tafel Romeo