Build a Responsive Kanban Board Application in WPF using C# and MVVM 🚀

Are you looking for a practical WPF project to improve your C#, MVVM, and desktop application development skills? In this series, we will build a Responsive Kanban Board Application from scratch using WPF, C#, and MVVM architecture . This project is inspired by modern task management tools like Trello and helps you understand how real-world desktop applications are designed and developed. Why Build a Kanban Board in WPF? Many developers learn WPF concepts individually: Buttons TextBoxes Data Binding Commands Collections But when building a real application, you need to combine everything together. A Kanban Board project helps you learn: ✅ Real UI design ✅ MVVM architecture ✅ Dynamic data handling ✅ User interaction ✅ Drag & Drop functionality ✅ Command-based programming ✅ Reusable WPF components What You Will Build in This WPF Project We create a responsive Kanban Board where users can manage tasks visually. The application contains: 📌 Multiple ...

How to create Own Semaphore?


 class CustomSemaphore
    {
        private Mutex[] arrMutex;

        // place holder to store thread to mutex mapping
        private Thread[] arrthread;

        // number of threads allowed to access the resources
        private int threadLimit;

        // contructor creates the mutexes
        public CustomSemaphore(int threadLimit)
        {
            this.threadLimit = threadLimit;
            arrMutex = new Mutex[this.threadLimit];
            arrthread = new Thread[this.threadLimit];
            for (int i = 0; i < this.threadLimit; i++)
            {
                arrMutex[i] = new Mutex();
                arrthread[i] = null;
            }
        }
        public int Wait()
        {
            int index = WaitHandle.WaitAny(arrMutex);
            if (index != WaitHandle.WaitTimeout)
                arrthread[index] = Thread.CurrentThread;
            return index;
        }
        public void Release()
        {
            for (int i = 0; i < threadLimit; i++)
            {
                if (arrthread[i] == Thread.CurrentThread)
                {
                    arrMutex[i].ReleaseMutex();
                    break;
                }
            }
        }
    }

Comments

Popular posts from this blog

Filter DataGrid and ListView in wpf using ICollectionView

Pagination of DataGrid in WPF using MVVM

How to Create TabControl using Prism Region