Convert Figma logo to code with AI

firstfloorsoftware logomui

Modern UI for WPF

2,598
757
2,598
145

Top Related Projects

Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.

40,356

🐉 Vue Component Framework

Component infrastructure and Material Design components for Angular

The Most Complete React UI Component Library

An enterprise-class UI design language and React UI library

26,384

Quasar Framework - Build high-performance VueJS user interfaces in record time

Quick Overview

MUI (Modern UI for WPF) is an open-source project that provides a set of controls and styles for creating modern user interfaces in WPF applications. It aims to bring a clean, flat, and minimalist design language to WPF, inspired by Microsoft's Modern UI principles.

Pros

  • Offers a comprehensive set of modern-looking controls and styles for WPF
  • Easy to integrate into existing WPF projects
  • Actively maintained with regular updates and bug fixes
  • Customizable themes and color schemes

Cons

  • Limited documentation compared to some other UI frameworks
  • May require a learning curve for developers new to Modern UI principles
  • Some advanced customization might require deeper knowledge of WPF and XAML
  • Not as feature-rich as some commercial alternatives

Code Examples

  1. Adding a MUI-styled button:
<mui:ModernButton Content="Click Me" Margin="10" />
  1. Creating a MUI window with a title bar:
<mui:ModernWindow x:Class="MyApp.MainWindow"
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  xmlns:mui="http://firstfloorsoftware.com/ModernUI"
                  Title="My MUI App" Height="450" Width="800">
    <!-- Window content here -->
</mui:ModernWindow>
  1. Implementing a MUI-styled navigation menu:
<mui:ModernMenu SelectedSource="/Pages/Home.xaml">
    <mui:LinkGroup DisplayName="Welcome">
        <mui:LinkGroup.Links>
            <mui:Link DisplayName="Home" Source="/Pages/Home.xaml" />
            <mui:Link DisplayName="About" Source="/Pages/About.xaml" />
        </mui:LinkGroup.Links>
    </mui:LinkGroup>
</mui:ModernMenu>

Getting Started

  1. Install the MUI NuGet package in your WPF project:

    Install-Package ModernUI.WPF
    
  2. Add the MUI namespace to your XAML:

    xmlns:mui="http://firstfloorsoftware.com/ModernUI"
    
  3. Start using MUI controls in your XAML:

    <mui:ModernWindow x:Class="MyApp.MainWindow"
                      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                      xmlns:mui="http://firstfloorsoftware.com/ModernUI"
                      Title="My MUI App" Height="450" Width="800">
        <mui:ModernButton Content="Hello, MUI!" Margin="10" />
    </mui:ModernWindow>
    
  4. Customize the appearance by modifying the App.xaml:

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/FirstFloor.ModernUI;component/Assets/ModernUI.xaml" />
                <ResourceDictionary Source="/FirstFloor.ModernUI;component/Assets/ModernUI.Light.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
    

Competitor Comparisons

Material UI: Comprehensive React component library that implements Google's Material Design. Free forever.

Pros of Material-UI

  • Larger community and more extensive documentation
  • Wider range of pre-built components and customization options
  • Regular updates and active maintenance

Cons of Material-UI

  • Steeper learning curve due to more complex API
  • Larger bundle size, which may impact performance
  • Stronger opinionated design, potentially limiting flexibility

Code Comparison

MUI (firstfloorsoftware/mui):

<mui:ModernWindow x:Class="MainWindow"
    xmlns:mui="http://firstfloorsoftware.com/ModernUI"
    Title="MainWindow" Height="350" Width="525">
    <Grid>
        <!-- Content here -->
    </Grid>
</mui:ModernWindow>

Material-UI:

import React from 'react';
import { ThemeProvider, createTheme } from '@mui/material/styles';
import Button from '@mui/material/Button';

const theme = createTheme();

function App() {
  return (
    <ThemeProvider theme={theme}>
      <Button variant="contained">Hello World</Button>
    </ThemeProvider>
  );
}

The code comparison highlights the different approaches and technologies used by these libraries. MUI is focused on WPF applications, while Material-UI is a React-based library for web development. This fundamental difference in platforms and ecosystems makes a direct comparison challenging, as they serve different purposes and target different types of applications.

40,356

🐉 Vue Component Framework

Pros of Vuetify

  • Larger community and more extensive documentation
  • Wider range of pre-built components and features
  • Better support for mobile and responsive design

Cons of Vuetify

  • Steeper learning curve due to its extensive feature set
  • Larger bundle size, which may impact performance
  • More opinionated design, potentially limiting customization

Code Comparison

MUI (C#):

<mui:ModernWindow x:Class="MainWindow"
    xmlns:mui="http://firstfloorsoftware.com/ModernUI"
    Title="My App" IsTitleVisible="True"
    LogoData="{StaticResource AppLogo}"
    ContentSource="/Pages/Home.xaml">
</mui:ModernWindow>

Vuetify (JavaScript):

<v-app>
  <v-app-bar app>
    <v-toolbar-title>My App</v-toolbar-title>
  </v-app-bar>
  <v-main>
    <v-container>
      <!-- Your content here -->
    </v-container>
  </v-main>
</v-app>

MUI is a .NET-based UI framework for WPF applications, while Vuetify is a Vue.js component library for web applications. The code comparison shows the basic structure for creating a window or app layout in each framework. MUI uses XAML for defining the UI, while Vuetify uses Vue.js templates with custom components.

Component infrastructure and Material Design components for Angular

Pros of Angular Components

  • Extensive component library with a wide range of UI elements
  • Robust documentation and community support
  • Seamless integration with Angular framework

Cons of Angular Components

  • Steeper learning curve for developers new to Angular
  • Larger bundle size compared to MUI
  • Less flexibility for customization outside of Angular ecosystem

Code Comparison

MUI (WPF):

<mui:ModernWindow x:Class="MainWindow"
    xmlns:mui="http://firstfloorsoftware.com/ModernUI">
    <Grid>
        <TextBlock Text="Hello, MUI!" />
    </Grid>
</mui:ModernWindow>

Angular Components:

<mat-card>
  <mat-card-content>
    <p>Hello, Angular Components!</p>
  </mat-card-content>
</mat-card>

MUI focuses on creating modern UI for WPF applications, while Angular Components provides a comprehensive set of UI elements for Angular applications. MUI offers a lightweight solution for Windows desktop apps, whereas Angular Components is part of a full-featured web development framework. The code examples showcase the different syntax and structure between the two libraries, reflecting their distinct target platforms and ecosystems.

The Most Complete React UI Component Library

Pros of PrimeReact

  • Extensive component library with 80+ UI components
  • Robust theming system with built-in themes and easy customization
  • Active development and frequent updates

Cons of PrimeReact

  • Steeper learning curve due to its comprehensive nature
  • Larger bundle size compared to MUI
  • Some components may require additional configuration

Code Comparison

MUI (Material-UI):

import { Button } from '@mui/material';

<Button variant="contained" color="primary">
  Click me
</Button>

PrimeReact:

import { Button } from 'primereact/button';

<Button label="Click me" className="p-button-primary" />

Summary

PrimeReact offers a more extensive component library and theming options, making it suitable for large-scale applications with complex UI requirements. However, this comes at the cost of a steeper learning curve and larger bundle size. MUI, on the other hand, provides a more streamlined approach with a focus on Material Design principles, which may be preferable for projects that align with that design system or require a smaller footprint.

The code comparison shows that both libraries offer similar component usage patterns, with slight differences in prop naming and structure. Developers familiar with React should find either library relatively easy to work with, though PrimeReact may require more time to fully leverage its extensive features.

An enterprise-class UI design language and React UI library

Pros of Ant Design

  • Larger community and more extensive ecosystem
  • More comprehensive component library with advanced features
  • Better internationalization support and built-in localization

Cons of Ant Design

  • Steeper learning curve due to its extensive API and features
  • Larger bundle size, which may impact performance in smaller projects
  • Less flexibility in customization compared to MUI's more modular approach

Code Comparison

MUI (Material-UI for WPF):

<mui:ModernWindow x:Class="MainWindow"
    xmlns:mui="http://firstfloorsoftware.com/ModernUI">
    <Grid>
        <TextBlock Text="Hello, MUI!" />
    </Grid>
</mui:ModernWindow>

Ant Design (React):

import { Button } from 'antd';

const App = () => (
  <Button type="primary">Hello, Ant Design!</Button>
);

While both libraries provide UI components, MUI is specifically for WPF applications, whereas Ant Design is primarily used with React for web development. This fundamental difference makes a direct code comparison less relevant, as they target different platforms and frameworks.

26,384

Quasar Framework - Build high-performance VueJS user interfaces in record time

Pros of Quasar

  • More comprehensive framework with a larger ecosystem and community support
  • Offers cross-platform development capabilities (web, mobile, and desktop)
  • Provides a rich set of pre-built UI components and layouts

Cons of Quasar

  • Steeper learning curve due to its extensive feature set
  • Potentially heavier bundle size for smaller projects
  • More opinionated structure, which may limit flexibility in some cases

Code Comparison

Quasar component example:

<template>
  <q-btn color="primary" label="Click me" @click="handleClick" />
</template>

<script>
export default {
  methods: {
    handleClick() {
      // Handle click event
    }
  }
}
</script>

MUI component example:

<mui:ModernButton Content="Click me" Click="HandleClick" />
private void HandleClick(object sender, RoutedEventArgs e)
{
    // Handle click event
}

Summary

Quasar is a more feature-rich framework suitable for cross-platform development, while MUI focuses on Windows Presentation Foundation (WPF) applications. Quasar offers a wider range of components and tools but may be overkill for simpler projects. MUI provides a streamlined approach for WPF development with a smaller learning curve.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Modern UI for WPF (MUI)

A set of controls and styles converting your WPF application into a great looking Modern UI app. This open source project is a spin-off of XAML Spy, the visual runtime inspector for Silverlight, Windows Phone, Windows Store and WPF. Read the official announcement

Build status Release NuGet Stars

Demo

Check out the MUI demo app included in the MUI release. The app demonstrates most features of the MUI framework. The full source of the demo app is included in the source code of this project.

Documentation

See some screenshots to get an idea of what Modern UI for WPF is all about. And visit the wiki to learn how to incorporate Modern UI for WPF into your application.

Features

  • Appearance, configurable at runtime
    • Dark, light and custom themes
    • Accent color
    • Large and small fonts
  • New modern controls
    • BBCodeBlock
    • ModernButton
    • ModernDialog
    • ModernFrame
    • ModernMenu
    • ModernProgressRing (with 8 built-in styles)
    • ModernTab
    • ModernToggleButton
    • ModernWindow
    • RelativeAnimatingContentControl
    • TransitioningContentControl
  • Layout
    • A set of predefined page layouts for a consistent look & feel
  • Control styles
    • Styles for common WPF controls, such as Button, TextBlock, etc.
    • All styles automatically adapt the dark and light theme and use accent colors where appropiate
  • Customizable navigation framework
    • ILinkNavigator and IContentLoader interfaces for maximum flexibility
    • Content loader exception templates in ModernFrame
  • Project and item templates
    • Visual Studio 2012, 2013 and 2015 project and item templates for creating ModernUI apps as fast and smooth as possible
    • Read more and download the extension containing the templates from the Visual Studio Gallery

Acknowledgements