We may earn an affiliate commission when you visit our partners.
Course image
Huw Collingbourne

In this course you will follow the development of a complete project from the ground up. It explains how to use design and code a WPF program in Visual Studio. You will end up with a utility that plays audio and video, controls playback volume, balance, position and speed.

Read more

In this course you will follow the development of a complete project from the ground up. It explains how to use design and code a WPF program in Visual Studio. You will end up with a utility that plays audio and video, controls playback volume, balance, position and speed.

  • Play video and audio files
  • Load single media files or entire folders of files
  • Drag-and-drop files direct from the Windows Explorer
  • Create named playlists that can be saved and loaded to and from disk
  • Change the volume, position, speed and balance of a playing track
  • Use styles and effects to change the user interface appearance
  • Use Timers to respond to tick events
  • Use file dialogs to save and load files
  • Read and write structured XML files to and from disk
  • Create applications with multiple windows
  • Use Windows Shell functions to obtain file metadata

This is a project-based course that comes with all the source code ready-to-run. It provides a great way for C# programmer to move beyond the basics to explore the development of more complex C# applications using the WPF (Windows Presentation Foundation).

Enroll now

What's inside

Learning objectives

  • Understand how to design using the wpf.
  • Develop a functional and useful media-playing tool.
  • Add styles and effects to controls
  • Read and write xml data to and from disk
  • Use windows shell functions to obtain file metadata
  • Implement file drag-and-drop

Syllabus

An introduction to the WPF and the MediaElement

How do you go about programming a media-player?

This ReadMe file provides guidance on more sources of information which you may find of use when following this course.

Read more

Follow along to create a basic media player.

Download the code for this course

Window Forms, Universal Windows or the WPF?

XML for designing the user interface

How to design a simple WPF application from scratch.

Dealing with events as they happen at runtime

Let’s add controls for volume, balance and more

How do you change the track playback position?

So what is a preview mouse event exactly?

A timer is like a little invisible clock that ticks away generating tick events.

More on sliders…

How can we select and load media files?

How to create WPF menus

How to add a File Open dialog

How to open a whole directory of media files

Moving through the tracks in a playlist

Handling errors

Test your understanding of the basics of design and coding of a WPF media player

Creating user-defined playlists

Writing XML data

Loading XML data from a file

Saving playlists by name

Drag and drop files from the Windows Explorer

Working with styles

Working with effects

Creating a glow effect

Making effects change over time

There’s more to animation than meets the eye

Digging deeper into styles

The mysteries of the Windows Shell functions

Adding more windows to your application

Displaying the metadata on the playing file

How to drag-drop-and-save playlists.

What do you need to do to implement playlists and style an application…?

You now have a fully-functional media player. But there are still lots of things you can do to add more features…

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Provides C# programmers with a project-based approach to move beyond the basics and explore the development of more complex applications using the WPF
Explores the use of Windows Shell functions to obtain file metadata, which can be useful for developers working with file management and system integration
Teaches how to read and write structured XML files, a common format for storing application data and configurations
Focuses on WPF (Windows Presentation Foundation), which is a somewhat older framework, so learners should consider whether it aligns with their career goals
Requires Visual Studio, which is a powerful IDE, but learners should ensure they have access to it and that it is compatible with their operating system

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Building a c# wpf media player

According to learners, this course offers a fantastic, project-based approach to learning WPF by guiding students through building a complete media player application. Students appreciate the step-by-step instruction and the availability of clean, helpful source code. The course is seen as a solid foundation for C# developers looking to move into WPF development and covers useful features like drag-and-drop, XML handling, and styling. However, some students found the pace felt fast at times, and felt the explanations could be clearer, especially for those with less prior UI experience, noting it's a good overview but not a deep dive into all WPF complexities.
Provides solid foundation but lacks depth.
"It's a good overview, but not a deep dive into every WPF aspect."
"I gained a solid foundation for WPF development from this course."
"It's a great way to see how WPF applications are structured."
"I wish there was more on data binding or advanced topics..."
Covers essential WPF features.
"Drag and drop, XML saving, styling - it's all covered well."
"The sections on drag and drop and XML are particularly useful for me."
"Covers important WPF elements like controls, events, menus, dialogs."
"The XML and metadata parts were nice additions."
Provided code is clean and essential.
"The instructor's code is clean and easy to follow."
"The code provided is helpful."
"The code download was essential and worked perfectly."
"I had to rely heavily on the provided code to figure things out myself."
Learn by building a full application.
"Fantastic project-based course! Building the media player from scratch really solidified my understanding of WPF."
"Highly recommend this course! The project structure is logical, and you learn so much by doing."
"Loved building the media player piece by piece. It's a great way to see how WPF applications are structured."
"Excellent practical course. The instructor guides you through building a complex application step by step."
One reviewer questioned modernity.
"Is the content outdated? Some practices shown feel old."
"I expected more modern C# / WPF patterns than were presented."
Some find pace fast, clarity varies.
"Sometimes the pace felt a bit fast, but the code is available."
"I felt like I needed more C# background than expected, or maybe the explanations on linking UI and code could be clearer for a beginner."
"Some parts felt a bit rushed, especially error handling."
"The explanations weren't always clear, and I had to rely on the code."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Program a Media-Player in C# with these activities:
Review C# Fundamentals
Strengthen your understanding of C# syntax, data types, and object-oriented principles. This will provide a solid foundation for understanding the course's code examples and WPF concepts.
Show steps
  • Review C# syntax and data types.
  • Practice writing simple C# programs.
  • Study object-oriented programming concepts.
Brush up on WPF Basics
Familiarize yourself with the core concepts of WPF, including XAML, data binding, and control layout. This will make it easier to follow the course's project development and UI customization.
Show steps
  • Study WPF architecture and key components.
  • Practice creating simple WPF applications.
  • Experiment with different WPF controls and layouts.
Read 'C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development'
Supplement your learning with a comprehensive guide to C# and .NET Core. This book will provide a deeper understanding of the technologies used in the course.
Show steps
  • Read the chapters relevant to WPF and media playback.
  • Experiment with the code examples provided in the book.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'Pro WPF in C# 2010'
Supplement your learning with a comprehensive guide to WPF. This book will provide a deeper understanding of the technologies used in the course.
Show steps
  • Read the chapters relevant to WPF and media playback.
  • Experiment with the code examples provided in the book.
Write a Blog Post
Share your learning experience by writing a blog post about a specific aspect of the media player development. This will help you consolidate your knowledge and communicate it to others.
Show steps
  • Choose a topic related to the media player development.
  • Write a clear and concise blog post explaining the topic.
  • Include code examples and screenshots to illustrate your points.
Extend the Media Player
Enhance the media player by adding new features such as visualizations, equalizer, or support for additional file formats. This will allow you to apply your knowledge and explore advanced WPF concepts.
Show steps
  • Choose a feature to add to the media player.
  • Research the necessary WPF components and APIs.
  • Implement the feature and test it thoroughly.
Contribute to a Media Player Project
Contribute to an existing open-source media player project by fixing bugs, adding new features, or improving documentation. This will provide valuable real-world experience and allow you to collaborate with other developers.
Show steps
  • Find an open-source media player project on GitHub or GitLab.
  • Identify a bug to fix or a feature to add.
  • Submit a pull request with your changes.

Career center

Learners who complete Program a Media-Player in C# will develop knowledge and skills that may be useful to these careers:
Audio Software Developer
An audio software developer specialises in creating software that manipulates, processes and plays audio. This course may be useful to someone who wants to become an audio software developer because the entire project concerns designing and building a media player. It helps to learn how to play video and audio files, load single media files or entire folders of files, drag and drop files direct from the Windows Explorer, and create named playlists that can be saved and loaded to and from disk. Audio software developers should take this course to enhance their skills in building audio-rich applications and gain experience with relevant technologies.
Multimedia Programmer
A multimedia programmer is responsible for creating interactive and engaging multimedia applications. This course is directly applicable to the work of a multimedia programmer, as it focuses on developing a media player application with features such as audio and video playback, playlist management, and user interface customization. It helps to learn how to play audio and video files, load single media files or entire folders of files, drag and drop files direct from the Windows Explorer, and create named playlists that can be saved and loaded to and from disk. Multimedia programmers should take this course to enhance their skills in developing media-rich applications and gain experience with relevant technologies.
Video Software Developer
A video software developer specialises in creating software that manipulates, processes and plays video. This course may be useful to someone who wants to become a video software developer because the entire project concerns designing and building a media player. It helps to learn how to play video and audio files, load single media files or entire folders of files, drag and drop files direct from the Windows Explorer, and create named playlists that can be saved and loaded to and from disk. Video software developers should take this course to enhance their skills in building video-rich applications and gain experience with relevant technologies.
C# Developer
A C# developer specializes in using the C# programming language to build a variety of applications. This course is highly relevant to aspiring C# developers, as it provides a practical, project-based approach to learning C# and WPF. The course may be useful by helping to develop a fully functional media player application, covering key concepts such as UI design, event handling, file input/output, and the use of Windows Shell functions. The course also helps to build a foundation to designing user interfaces with XML, handling events, implementing drag-and-drop functionality, and working with styles and effects to enhance the user experience. C# developers should take this course to gain hands-on experience in building a real-world application and strengthen their C# programming skills.
WPF Developer
A WPF developer specializes in creating desktop applications using the Windows Presentation Foundation framework. This course is highly relevant to those wanting to become a WPF developer, as it focuses on developing a media player application using C# and WPF from the ground up. It may be useful to learn about designing user interfaces with XML, handling events, implementing drag-and-drop functionality, and working with styles and effects to enhance the user experience. By following the project-based approach of this course, aspiring WPF developers gain hands-on experience in building a complete application, writing XML data, loading XML data from a file, saving playlists by name, and drag and drop files from the Windows Explorer. This course helps build a foundation to creating visually appealing and interactive desktop applications.
Application Developer
An application developer is responsible for designing, coding, and testing software applications across various platforms. This course may be useful to application developers by providing hands-on experience in building a complete media player application using C# and WPF. It helps to understand the development process from start to finish, including UI design, event handling, file management, and the implementation of features such as drag-and-drop and playlist creation. By completing this course, application developers gain practical skills in building complex desktop applications and learn how to use features such as saving playlists by name, working with effects, creating a glow effect, and making effects change over time.
Software Engineer
A software engineer applies engineering principles to the design, development, and testing of software systems. This course may be useful to aspiring software engineers as it simulate the development of a complete project from the ground up. It explains how to design and code a WPF program in Visual Studio. The course emphasizes the importance of understanding design principles, implementing key features such as file handling and user interaction, and ensuring the application meets specified requirements. Additionally, it provides experience in debugging and troubleshooting, essential skills for any software engineer. Aspiring software engineers should take this course to gain practical experience in the software development lifecycle and enhance their problem-solving skills.
Software Developer
A software developer designs, develops, and tests software applications. This course may be useful to aspiring software developers as it provides hands-on experience in developing a complete media player application using C# and WPF. Learners gain practical skills in user interface design using XML, event handling, file input/output, and working with Windows Shell functions. The course emphasizes a project-based approach, offering valuable experience in building complex applications, moving beyond basic programming concepts to explore the development of more complex C# applications using the WPF. Aspiring software developers should take this course as it demonstrates how to implement features such as drag-and-drop functionality, playlist creation, and media file handling, all of which translate to many different applications.
UI Developer
A UI developer focuses on the visual aspects of an application, ensuring a user-friendly and engaging experience. This course helps UI developers to create appealing C# applications that can display audio and video, control playback volume, balance, position and speed. This course may be useful as it covers aspects of UI design using WPF, including styling and effects. Learners gain experience in using XML for interface design, implementing drag-and-drop functionality, and working with Windows Shell functions to enhance the user experience. The course also emphasizes the importance of event handling and user interaction, allowing learners to build responsive and intuitive interfaces. Aspiring UI developers should take this course to develop a practical understanding of UI development principles and techniques.
Game Developer
A game developer creates video games for various platforms. This course may be useful for game developers who use C# and WPF for game development, as it provides hands-on experience in building a media player application with advanced features. It helps to learn about UI design, event handling, and media file management, all of which are relevant to game development. The course also covers topics such as animation and effects, which can be applied to enhance the visual appeal of games. Game developers should take this course to expand their knowledge of C# and WPF and gain practical skills in building interactive applications.
Quality Assurance Analyst
A quality assurance analyst is responsible for testing software applications to ensure they meet quality standards. This course may be useful for quality assurance analysts looking to understand the development process of a C# application. Understanding how features such as playlist creation, drag and drop, and file I/O are implemented will help in creating effective test cases. A quality assurance analyst can also improve their understanding of application design and user interface principles. Testing this kind of application can provide valuable insights into potential issues that might arise in other software projects.
Embedded Systems Engineer
An embedded systems engineer designs and develops software for embedded systems, such as those found in consumer electronics and industrial equipment. While this course focuses on desktop application development, it may be useful by providing a foundation in C# programming and UI design. It may be useful to learn about event handling, file management, and working with Windows Shell functions, which can be applied to embedded systems development. Embedded systems engineers should take this course to broaden their knowledge of software development principles and gain experience with a popular programming language.
Mobile App Developer
A mobile app developer creates applications for mobile devices such as smartphones and tablets. While this course focuses on desktop application development, it may be useful for mobile app developers who wish to expand their skill set and learn about C# and WPF. It helps to learn about UI design principles, event handling, and file management, which are transferable to mobile app development. Mobile app developers should take this course to broaden their knowledge of software development and explore new technologies.
Data Scientist
A data scientist analyzes and interprets complex data to help organizations make better decisions. While this course focuses on application development, it may be useful for data scientists who need to build custom tools for data visualization or analysis. It may be useful to learn about UI design, file management, and data handling, which can be applied to data science projects. Additionally, the course provides experience in working with XML data, a common format for data storage and exchange. Data scientists should take this course to broaden their skills in software development and learn how to build custom tools for data analysis.
DevOps Engineer
A DevOps engineer focuses on automating and streamlining the software development process. While this course focuses on application development, it may be useful for DevOps engineers who need to build custom tools for deployment or monitoring. It may be usefulto learn about scripting, automation, and system administration, which can be applied to DevOps tasks. Additionally, the course provides experience in working with file systems and network protocols, which are relevant to DevOps engineering. DevOps engineers should take this course to broaden their skills in software development and learn how to build custom tools for automation.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Program a Media-Player in C#.
Provides a comprehensive guide to C# and .NET Core, covering the latest features and best practices. It's a valuable resource for understanding the underlying technologies used in the media player project. While not strictly required, it offers additional depth and context to the course material. It is commonly used as a textbook for C# courses.
Provides a comprehensive guide to WPF, covering the latest features and best practices. It's a valuable resource for understanding the underlying technologies used in the media player project. While not strictly required, it offers additional depth and context to the course material. It is commonly used as a textbook for WPF courses.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser