Modern UI for WPF

Last update: Jun 28, 2022

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

GitHub

https://github.com/firstfloorsoftware/mui
Comments
  • 1. Storing individual user settings

    I really like MUI. It has helped me take my application from something that looked like 3rd grader built to something a 3rd grader has not built. I was wondering if someone could help me figure out or point me in the right direction (preferably somewhere that can show examples lol learning wpf/c# on my own) on how to implement save user settings feature. Like if I click the "dark" theme, how can I have it set to when I open the program again, its under the dark theme vs the light?

    Reviewed by cryptic-ai at 2015-08-02 02:45
  • 2. MefContentLoader not called in MEF construction

    I've followed the instructions in the Wiki for the MEF construction. My views code-behind look all like this:

        [Content("/View/EmployeeListView.xaml")]
        public partial class EmployeeListView : IContent
        {
            public EmployeeListView()
            {
                InitializeComponent();
            }
    
            [Import]
            public EmployeeListViewModel EmployeeListViewModel
            {
                get { return (EmployeeListViewModel)DataContext; }
                set { DataContext = value; }
            }
    
    

    When debugging I can see the view is constructed, and also the view model is constructed by the MEF catalog. But the viewmodel is not set on the view, debugger does not break in setter of property EmployeeListViewModel. Also the MefContentLoader is not called. Can anybody explain why this is not happening? Workaround for now is that, in the constructor of the view, I provide access to the container (via MainWindow) to pull out the view model myself and set the DataContext DataContext = Container.GetExportedValue<EmployeeListViewModel>() which is not so nice :-/

    Reviewed by bhutten14 at 2016-02-11 21:22
  • 3. ModernDialog: change text of button

    Hi, I'm using ModernDialog on my application.

    I would replace the text of the button of MessageBoxButton with the text in my language, is it possibile?

    For example: replace "Yes" with "Si" and anymore.

    Thanks.

    Reviewed by robertosalemi at 2015-03-03 16:06
  • 4. mui:LinkGroup & mui:Link DisplayName as DependencyProperty

    Currently they are simple properties and can not be bound, making localization hard to achieve here. Is it possible to turn them into DependencyProperty ?

    Reviewed by picrap at 2015-02-25 20:38
  • 5. MEF: ContentLoader not called for source reference in ModernFrame

    Another MEF problem: On the MainWindow all source references are nicely resolved via the MefContentLoader, so the LoadContent(Uri uri) method is called. But for the ModernFrame on a page the source reference is not loaded via the MefContentLoader. I use: <mui:ModernFrame Grid.Column="2" Source="/View/SummaryView.xaml" Margin="32,0,0,0" /> But the SummaryView.xaml is not loaded via the MefContentLoader.

    See attached solution, when debugging the solution: set breakpoint in MefContentLoader.LoadContent() method. When starting the application the debugger breaks for uri WelcomView.xaml, then when the MainWindow is visible click on the link 'Alle', the the debugger breaks for uri EmployeeListView.xaml. But the debugger does not break for the SummaryView.xaml, which is expected. Why is the MefContentLoader not called when loading SummaryView.xaml source in the ModernFrame?

    SourceCode.zip

    Reviewed by bhutten14 at 2016-02-16 21:59
  • 6. Add Menu at Runtime

    Hi and first at all I'm an newbie to c# MVVM, mui. I'm just a little embedded C programmer :-) I want to display an Menu in the main Window. Once the user has logged in. The visible meu options depend on the user's role. In my MainWindow.xaml File the ContentSource is set to "/View/Login_View.xaml" to display the UserControl Login and the MenuCode is comment out.

    If the User clicked on the LoginButton, the Login_viewModel check if there is a valid User stored in a Database and get the role of this user.

    LoginCommand = new RelayCommand(DoLogin); private void DoLogin(object boj) { //Do some database communication, to get the Userrole //How to set the roel in MainWindow_ViewModel ? }

    I found this Thread https://github.com/firstfloorsoftware/mui/issues/10 with a similar problem, but I do not fully understand the ansewers/solutions.

    In the MainWindow_ViewModel there ist an public Function

    public void DisplayMenu(string role) { if (role.Equals("User") ) { var window = Application.Current.MainWindow as ModernWindow; var library= new LinkGroup { DisplayName = "Books"}; library.Links.Add(new Link { DisplayName = "Serach" }); window.MenuLinkGroups.Add(library); } else if (role.Equals("Admin")) { var window = Application.Current.MainWindow as ModernWindow; var library= new LinkGroup { DisplayName = "Books"}; library.Links.Add(new Link { DisplayName = "Serach" }); library.Links.Add(new Link { DisplayName = "Add" }); var Customer = new LinkGroup { DisplayName = "Customer"}; Customer.Customer.Add(new Link { DisplayName = "Serach" }); Customer.Customer.Add(new Link { DisplayName = "Add" }); window.MenuLinkGroups.Add(Customer); } }

    I know that my first question has nothing to do with mui, but it depends to my main question. How can I use the DisplayMenu-Function out of the Login_ViewModel and how can I add the Source (Referencing to corresponding View.xaml) to the MenuLinks?

    Thanks Chris

    Reviewed by Loro77 at 2016-05-31 13:08
  • 7. A problem when replacing ModernWindow style

    The TitleLink control is quite good but because I already have custom navigation service, I have to replace the link navigation system. So I made new ModernWindow style resource with only TitleLink's command is changed with mine and applied the style to my main window with style key. But it didn't work. Error says "Collection property 'System.Windows.Controls.Border'.'RuntimeResources18' is null.".

    Below is my code [App.xaml] `

    <Style x:Key="ModernWindowStyle" TargetType="{x:Type mui:ModernWindow}" BasedOn="{StaticResource {x:Type mui:ModernWindow}}">
                    <!--<Setter Property="BackgroundContent" Value="{DynamicResource WindowBackgroundContent}" />
                    <Setter Property="FontFamily" Value="{DynamicResource DefaultFontFamily}" />
                    <Setter Property="FontSize" Value="{DynamicResource DefaultFontSize}" />
                    <Setter Property="Foreground" Value="{DynamicResource WindowText}" />
                    <Setter Property="BorderBrush" Value="{DynamicResource WindowBorder}" />
                    <Setter Property="Width" Value="800" />
                    <Setter Property="Height" Value="640" />
                    <Setter Property="MinWidth" Value="320" />
                    <Setter Property="MinHeight" Value="320" />
                    <Setter Property="ResizeMode" Value="CanResizeWithGrip" />
                    <Setter Property="UseLayoutRounding" Value="True" />
                    <Setter Property="TextOptions.TextFormattingMode" Value="Display" />-->
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="mui:ModernWindow">
                                <Border x:Name="WindowBorder" Margin="{Binding Source={x:Static SystemParameters.WindowNonClientFrameThickness}}">
                                    <Border.Background>
                                        <SolidColorBrush x:Name="WindowBorderBackground" Color="{DynamicResource WindowBackgroundColor}" />
                                    </Border.Background>
                                    <Border.Resources>
                                        <Storyboard x:Key="BackgroundAnimation">
                                            <ColorAnimation Storyboard.TargetName="WindowBorderBackground" Storyboard.TargetProperty="Color" To="{DynamicResource WindowBackgroundColor}" Duration="0:0:.6" />
                                        </Storyboard>
                                    </Border.Resources>
    
                                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1">
                                        <AdornerDecorator>
                                            <Grid x:Name="LayoutRoot">
                                                <Grid.RowDefinitions>
                                                    <RowDefinition Height="Auto" />
                                                    <RowDefinition Height="Auto" />
                                                    <RowDefinition Height="*" />
                                                </Grid.RowDefinitions>
    
                                                 <!--window background content--> 
                                                <ContentControl Grid.RowSpan="5" Content="{TemplateBinding BackgroundContent}" />
    
                                                 <!--title bar--> 
                                                <Grid>
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition Width="*" />
                                                        <ColumnDefinition Width="Auto" />
                                                        <ColumnDefinition Width="Auto" />
                                                        <ColumnDefinition Width="Auto" />
                                                    </Grid.ColumnDefinitions>
    
                                                     <!--title--> 
                                                    <TextBlock Text="{TemplateBinding Title}" Margin="8,0" VerticalAlignment="Center" Style="{StaticResource ModernWindowTitle}"
                                                       DataContext="{TemplateBinding IsTitleVisible}"
                                                       Visibility="{Binding Converter={StaticResource BooleanToVisibilityConverter}}"/>
    
                                                     <!--title links--> 
                                                    <ItemsControl Grid.Column="1" ItemsSource="{TemplateBinding TitleLinks}" Margin="0,0,24,0" WindowChrome.IsHitTestVisibleInChrome="True">
                                                        <ItemsControl.ItemsPanel>
                                                            <ItemsPanelTemplate>
                                                                <StackPanel Orientation="Horizontal" />
                                                            </ItemsPanelTemplate>
                                                        </ItemsControl.ItemsPanel>
                                                        <ItemsControl.ItemTemplate>
                                                            <DataTemplate>
                                                                <StackPanel Orientation="Horizontal">
                                                                    <Line x:Name="Separator" X1=".5" Y1="3" X2=".5" Y2="12" Margin="5,0" VerticalAlignment="Center" Stroke="{DynamicResource SeparatorBackground}" />
    
                                                                    <!--Command="navigation:LinkCommands.NavigateLink"-->
                                                                    <Button Content="{Binding DisplayName}"
                                                                    Command="local:NavigationCommand.NavigateLink"
                                                                    CommandParameter="{Binding Source}"
                                                                    CommandTarget="{Binding ElementName=ContentFrame}"
                                                                    Style="{StaticResource SystemButtonLink}" />
                                                                </StackPanel>
                                                                <DataTemplate.Triggers>
                                                                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
                                                                        <Setter Property="Visibility" TargetName="Separator" Value="Collapsed"/>
                                                                    </DataTrigger>
                                                                </DataTemplate.Triggers>
                                                            </DataTemplate>
                                                        </ItemsControl.ItemTemplate>
                                                    </ItemsControl>
    
                                                     <!--logo (visible only when LogoData is not null)--> 
                                                    <Border Grid.Column="2" Background="{DynamicResource Accent}" Width="36" Height="36" Margin="8,0"
                                                    DataContext="{TemplateBinding LogoData}"
                                                    Visibility="{Binding Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=inverse}">
                                                        <Path Data="{Binding}" Stretch="Fill" Fill="White" Width="24" Height="24" HorizontalAlignment="Center" VerticalAlignment="Center" />
                                                    </Border>
    
                                                     <!--window system buttons-->
                                                    <StackPanel Grid.Column="3" Orientation="Horizontal" VerticalAlignment="Top" WindowChrome.IsHitTestVisibleInChrome="True">
                                                        <Button Command="{Binding Source={x:Static SystemCommands.MinimizeWindowCommand}}" ToolTip="{local:LanguageBind Minimize}" Style="{StaticResource SystemButton}">
                                                            <Button.Content>
                                                                <Grid Width="13" Height="12" RenderTransform="1,0,0,1,0,1">
                                                                    <Path Data="M0,6 L8,6 Z" Width="8" Height="7" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                                  Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="2"  />
                                                                </Grid>
                                                            </Button.Content>
                                                        </Button>
                                                        <Grid Margin="1,0,1,0">
                                                            <Button x:Name="Restore" Command="{Binding Source={x:Static SystemCommands.RestoreWindowCommand}}" ToolTip="{local:LanguageBind Restore}" Style="{StaticResource SystemButton}" Visibility="Collapsed" >
                                                                <Button.Content>
                                                                    <Grid Width="13" Height="12" UseLayoutRounding="True" RenderTransform="1,0,0,1,.5,.5">
                                                                        <Path Data="M2,0 L8,0 L8,6 M0,3 L6,3 M0,2 L6,2 L6,8 L0,8 Z" Width="8" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                                      Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="1"  />
                                                                    </Grid>
                                                                </Button.Content>
                                                            </Button>
                                                            <Button x:Name="Maximize" Command="{Binding Source={x:Static SystemCommands.MaximizeWindowCommand}}" ToolTip="{local:LanguageBind Maximize}" Style="{StaticResource SystemButton}" >
                                                                <Button.Content>
                                                                    <Grid Width="13" Height="12">
                                                                        <Path Data="M0,1 L9,1 L9,8 L0,8 Z" Width="9" Height="8" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                                      Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="2"  />
                                                                    </Grid>
                                                                </Button.Content>
                                                            </Button>
                                                        </Grid>
                                                        <Button Command="{Binding Source={x:Static SystemCommands.CloseWindowCommand}}" ToolTip="{local:LanguageBind Close}" Style="{StaticResource SystemCloseButton}" >
                                                            <Button.Content>
                                                                <Grid Width="13" Height="12" RenderTransform="1,0,0,1,0,1">
                                                                    <Path Data="M0,0 L8,7 M8,0 L0,7 Z" Width="8" Height="7" VerticalAlignment="Center" HorizontalAlignment="Center"
                                                                  Stroke="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button}}" StrokeThickness="1.5"  />
                                                                </Grid>
                                                            </Button.Content>
                                                        </Button>
                                                    </StackPanel>
                                                </Grid>
    
                                                <Grid Grid.Row="1">
                                                    <Grid.ColumnDefinitions>
                                                        <ColumnDefinition Width="42" />
                                                        <ColumnDefinition Width="*"/>
                                                    </Grid.ColumnDefinitions>
    
                                                     <!--back button--> 
                                                    <mui:ModernButton Margin="8,10,0,0" HorizontalAlignment="Left" VerticalAlignment="Top"
                                                                   EllipseDiameter="24" IconWidth="12" IconHeight="12"
                                                                   IconData="F1 M 33,22L 33,26L 19.75,26L 27,33L 20.5,33L 11,24L 20.5,15L 27,15L 19.75,22L 33,22 Z"
                                                                   Command="NavigationCommands.BrowseBack"
                                                                   CommandTarget="{Binding ElementName=ContentFrame}" 
                                                                   ToolTip="{local:LanguageBind Back}"
                                                                   WindowChrome.IsHitTestVisibleInChrome="True" />
    
                                                     <!--main menu--> 
                                                    <mui:ModernMenu Grid.Column="1"
                                                                 SelectedSource="{Binding Source, ElementName=ContentFrame, Mode=TwoWay}"
                                                                 LinkGroups="{TemplateBinding MenuLinkGroups}" />
                                                </Grid>
    
                                                 <!--content frame--> 
                                                <mui:ModernFrame x:Name="ContentFrame" Grid.Row="3" Grid.RowSpan="2" Margin="42,8,16,16" Source="{Binding ContentSource, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}" ContentLoader="{TemplateBinding ContentLoader}"/>
    
                                                 <!--resize grip--> 
                                                <Grid Grid.Row="2" x:Name="ResizeGrip" Background="Transparent" Visibility="Collapsed" HorizontalAlignment="Right" VerticalAlignment="Bottom" WindowChrome.ResizeGripDirection="BottomRight">
                                                    <Path Width="12" Height="12" Margin="1" 
                                                  Stroke="{DynamicResource WindowText}"
                                                  StrokeThickness="1"
                                                  Stretch="None"
                                                  Data="F1 M1,10 L3,10 M5,10 L7,10 M9,10 L11,10 M2,9 L2,11 M6,9 L6,11 M10,9 L10,11 M5,6 L7,6 M9,6 L11,6 M6,5 L6,7 M10,5 L10,7 M9,2 L11,2 M10,1 L10,3" />
                                                </Grid>
                                            </Grid>
                                        </AdornerDecorator>
                                    </Border>
                                </Border>
    
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsActive" Value="True">
                                        <Setter Property="BorderBrush" Value="{DynamicResource WindowBorderActive}" />
                                    </Trigger>
                                    <Trigger Property="WindowState" Value="Maximized">
                                        <Setter TargetName="Maximize" Property="Visibility" Value="Collapsed" />
                                        <Setter TargetName="Restore" Property="Visibility" Value="Visible" />
                                        <Setter TargetName="LayoutRoot" Property="Margin" Value="7" />
                                    </Trigger>
                                    <Trigger Property="WindowState" Value="Normal">
                                        <Setter TargetName="Maximize" Property="Visibility" Value="Visible" />
                                        <Setter TargetName="Restore" Property="Visibility" Value="Collapsed" />
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="ResizeMode" Value="CanResizeWithGrip" />
                                            <Condition Property="WindowState" Value="Normal" />
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="ResizeGrip" Property="Visibility" Value="Visible" />
                                    </MultiTrigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
    
                    <Setter Property="WindowChrome.WindowChrome">
                        <Setter.Value>
                            <WindowChrome CornerRadius="0" GlassFrameThickness="1" UseAeroCaptionButtons="False" NonClientFrameEdges="None" />
                        </Setter.Value>
                    </Setter>
                </Style>
    

    `

    [MainWindow.xaml] `

    <mui:ModernWindow
    ...
        Style="{StaticResource ModernWindowStyle}">
    ...
    
    
    

    `

    Reviewed by Epikem at 2016-02-23 11:34
  • 8. Just need a little help with something...

    So I'm trying to implement some new features that I found in the excellent update recently.

    I'm trying to implement the adding of a new theme using the 'love' on as a test. Bellow is my complete code for the ResourceDictionary. I've tried it like this <ImageBrush Opacity=".1" ImageSource="/Assets/background.love.jpg" Stretch="UniformToFill" />

    and like this <ImageBrush Opacity=".1" ImageSource="/CTaCInformationSystem;component/Assets/background.love.jpg" Stretch="UniformToFill" />

    both give me this error: Provide value on 'System.Windows.Baml2006.TypeConverterMarkupExtension during the AppearanceManager.Current.ThemeSource = value.Source; method that is called on line 148 of the AppereanceViewModel.cs. The error put's it right at the Opacity='.1' in the code below.

    The images is located in the Assets/background.love.jpg section in the source code.

    Any ideas on how to fix this?

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:mui="http://firstfloorsoftware.com/ModernUI">
    
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/FirstFloor.ModernUI;component/Assets/ModernUI.Dark.xaml" />
        </ResourceDictionary.MergedDictionaries>
    
        <Color x:Key="AccentColor">#e51400</Color>
    
        <!-- background image taken from http://good-wallpapers.com/ -->
        <Rectangle x:Key="WindowBackgroundContent" x:Shared="false">
            <Rectangle.Fill>
                <ImageBrush Opacity=".1" ImageSource="/CTaCInformationSystem;component/Assets/background.love.jpg" Stretch="UniformToFill" />
            </Rectangle.Fill>
        </Rectangle>
    
    </ResourceDictionary>```
    
    
    
    
    Reviewed by cryptic-ai at 2016-02-10 05:55
  • 9. Add "Visibility" and "Name" property and "Initialized" method to LinkGroup and Link

    It will help the program to show sections only when certains conditions are respected (example: running as admin)

    Kinda like that:

            /* ... */
            <mui:LinkGroup DisplayName="file">
                <mui:LinkGroup.Links>
                    <mui:Link DisplayName="Symbolic Link" Name="SymLink" Initialized="UserControl_Initialized" Source="/Pages/FileSymbolic.xaml" />
                    <mui:Link DisplayName="Hard Link" Source="/Pages/FileHard.xaml" />
                </mui:LinkGroup.Links>
            </mui:LinkGroup>
            /* ... */
    

    and the function will be like that:

            private void UserControl_Initialized(object sender, EventArgs e)
            {
                if (!VistaSecurity.IsAdmin())
                {
                    SymLink.Visibility = System.Windows.Visibility.Collapsed;
                }
            }
    

    It'll fix #67 also...

    Reviewed by sylveon at 2015-09-27 15:02
  • 10. Replaced NotifyPropertyChanged with Dependency Properties

    Replaced NotifyPropertyChanged with Dependency Properties on Displayable and children. This is more consistent with the idea that views use dependency properties whereas view-models use notify property changed.

    Reviewed by picrap at 2015-03-01 20:40
  • 11. Page does not refresh when clicked each time, only once it loads.

    <mui:ModernTab > mui:ModernTab.Links

            <mui:Link DisplayName="Link1" Source="Page1.xaml"/>
    
            <mui:Link DisplayName="Link2" Source="Page2.xaml"/>
    
        </mui:ModernTab.Links>
    </mui:ModernTab>
    

    Hi, I have used the links in the same way, the problem is page doesn't refresh when it is clicked each time. Can anyone please help me how to reload the page each time when it is selected or clicked?

    Reviewed by Hrchandra at 2016-07-22 07:55
  • 12. Cannot install version 1.0.9

    We're having difficulties installing version 1.0.9 into a WPF app. This is the list of steps fed to VS 2019's Output window:

    Attempting to gather dependency information for package 'ModernUI.WPF.1.0.9' with respect to project 'PharmacyWarehouse', targeting '.NETFramework,Version=v4.5.2' Gathering dependency information took 68 ms Attempting to resolve dependencies for package 'ModernUI.WPF.1.0.9' with DependencyBehavior 'Lowest' Resolving dependency information took 0 ms Resolving actions to install package 'ModernUI.WPF.1.0.9' Resolved actions to install package 'ModernUI.WPF.1.0.9' Adding package 'ModernUI.WPF.1.0.9' to folder 'C:\Src\PharmacyWarehouse\Pharmacy Warehouse\PharmacyWarehouse\packages' Install failed. Rolling back... Package 'ModernUI.WPF.1.0.9' does not exist in project 'PharmacyWarehouse' Removing package 'ModernUI.WPF.1.0.9' from folder 'C:\Src\PharmacyWarehouse\Pharmacy Warehouse\PharmacyWarehouse\packages' TF400024: The change on C:\Src\PharmacyWarehouse\Pharmacy Warehouse\PharmacyWarehouse\packages\ModernUI.WPF.1.0.9\ModernUI.WPF.1.0.9.nupkg cannot be undone because a file already exists at C:\Src\PharmacyWarehouse\Pharmacy Warehouse\PharmacyWarehouse\packages\ModernUI.WPF.1.0.9\ModernUI.WPF.1.0.9.nupkg. The file must be deleted from disk for the undo to succeed. Time Elapsed: 00:01:22.2454264 ========== Finished ==========

    Note, it complains that the package can't be installed, then it tries to uninstall it, but that fails "... because a file already exists at C:\Src\PharmacyWarehouse\Pharmacy Warehouse\PharmacyWarehouse\packages\ModernUI.WPF.1.0.9\ModernUI.WPF.1.0.9.nupkg". That makes no sense because I made sure the ModernUI.WPF.1.0.9 folder doesn't exist under the packages folder before starting. So, it's the process of trying to install ModernUI 1.0.9 that's putting whatever file its complaining needs to be deleted.

    Reviewed by Rod-in-NM at 2021-01-29 17:25
  • 13. .NET Core 3 support

    Hi,

    This PR converts the project to the new format, and multi-targeting .NET Framework 4.5 (what used to be), and additionally provides WPF support under .NET Core.

    There are a bunch of "changed files" that contain no changes at all. I deleted my fork and started all anew hoping to fix that, but those changes appear right when checking out.

    The only files I changed are the csproj files, added an .editorconfig file, and the DpiAwareWindow.cs file, which .NET Core introduced breaking changes to it, but as you can see, no big deal.

    Reviewed by weitzhandler at 2019-12-11 20:48
  • 14. Updated a broken link

    The WPF Shell Integration Library link leads to a page which doesn't exist anymore. It would make the most sense to use the archive.org capture instead.

    Reviewed by HankiDesign at 2019-06-27 13:18

Related

Nakama is an open-source server designed to power modern games and apps

Nakama is an open-source server designed to power modern games and apps. Features include user accounts, chat, social, matchmaker, realtime multiplayer, and much more.

Jun 22, 2022
Simple and modern news app that incorporates REST API (newsapi.org), all built entirely with Flutter.
Simple and modern news app that incorporates REST API (newsapi.org), all built entirely with Flutter.

A simple news app with a minimalistic and clean UI that incorporates the newsapi.org api all built entirely with Flutter. Be sure to leave a star ??

Jun 15, 2022
A clean and modern note taking app built with Flutter.
A clean and modern note taking app built with Flutter.

Notes App A clean, simple and modern note taking app built with Flutter. Be sure to leave a star ?? Features Create notes: Create notes that store loc

Jun 2, 2022
A full, sound, modern and documented JS interop for Dart.

This is (or should be) a full JavaScript interop package using package:js bindings. The bindings are generated by machine-reading WebIDL files for typ

May 14, 2022
A simple, modern AppImageHub Client, powered by flutter.
A simple, modern AppImageHub Client, powered by flutter.

AppImagePool Simple AppImageHub Client Main Features FLOSS and non profit app Simple categories Download from github directly, no extra-server involve

Jun 30, 2022
a modern games app UI made with flutter
a modern games app UI made with flutter

games_mix A game app UI made using flutter. Inspiration https://github.com/developedbyed/glass-website Screenshot Support If you like what we do, and

Oct 14, 2021
Modern UI for Messaging/Chatting App, with Signup/Login Pages and Awesome animation, built with flutter v2.5.2.

instantChat_app_ui Modern UI for Messaging/Chatting App, with Signup/Login Pages and Awesome animation, built with flutter v2.5.2. The package/plugin

Oct 25, 2021
A modern voice chat application. The project has been written solely in Dart Language.
A modern voice chat application. The project has been written solely in Dart Language.

VChat A modern voice chat application. The application welcomes the user with the login screen. After a simple registration process, an empty "Home" s

Jun 13, 2022
Modern and elegant test framework for Flutter, inspired by Cypress
Modern and elegant test framework for Flutter, inspired by Cypress

flutter_modern_test: Modern, elegant and productive test framework for Flutter, inspired by Cypress GitHub: https://github.com/fzyzcjy/flutter_modern_

May 4, 2022
Amazing task management application with fluid, minimal and modern UI using Flutter! One of The Winner Apps for Google DevFest 2021!
Amazing task management application with fluid, minimal and modern UI using Flutter! One of The Winner Apps for Google DevFest 2021!

Orb "Let your task orbit!" ?? Description Orb is an easy-to-use task manager app that help you manage your daily struggles to get your things done eff

Jun 4, 2022
A modern application to track your visitors at public places
A modern application to track your visitors at public places

VisitorTracker A modern application to track your visitors at public places! Exp

Dec 25, 2021
Modern crypto portfolio & market explorer. Built with @Flutter
Modern crypto portfolio & market explorer. Built with @Flutter

Trace Modern Crypto Portfolio & Market Explorer. Built with Flutter. Open Source. Lightweight. Clean. Straightforward. Fast. Powerful. Download for An

Jun 29, 2022
A GraphQL client for Flutter, bringing all the features from a modern GraphQL client to one easy to use package.
A GraphQL client for Flutter, bringing all the features from a modern GraphQL client to one easy to use package.

GraphQL Flutter ?? Bulletin See the v3 -> v4 Migration Guide if you're still on v3. Maintenance status: Low. Follow #762 for updates on the planned ar

Jun 22, 2022
Nakama is an open-source server designed to power modern games and apps

Nakama is an open-source server designed to power modern games and apps. Features include user accounts, chat, social, matchmaker, realtime multiplayer, and much more.

Jun 22, 2022
Simple and modern news app that incorporates REST API (newsapi.org), all built entirely with Flutter.
Simple and modern news app that incorporates REST API (newsapi.org), all built entirely with Flutter.

A simple news app with a minimalistic and clean UI that incorporates the newsapi.org api all built entirely with Flutter. Be sure to leave a star ??

Jun 15, 2022
A clean and modern note taking app built with Flutter.
A clean and modern note taking app built with Flutter.

Notes App A clean, simple and modern note taking app built with Flutter. Be sure to leave a star ?? Features Create notes: Create notes that store loc

Jun 2, 2022
A full, sound, modern and documented JS interop for Dart.

This is (or should be) a full JavaScript interop package using package:js bindings. The bindings are generated by machine-reading WebIDL files for typ

May 14, 2022
top-snackbar-flutter - Modern UI snackbar widget
 top-snackbar-flutter - Modern UI snackbar widget

top-snackbar-flutter - Modern UI snackbar widget

Jun 17, 2022