WPF Xaml suggesions not working on VS2019 16.4.4 - c#

I have a project (WpfControlLibrary1:WPF user control library) which includes MyDictionary.xaml. This dictionary includes resource definitions like :
<SolidColorBrush Color="AliceBlue" x:Key="MY_COLOR"/>"
I have another project(WpfCustomControlLibrary1:WPF custom control library).
WpfCustomControlLibrary1 references WpfControlLibrary1 to use styles. WpfCustomControlLibrary1 has App.xaml file like this.
<Application x:Class="WpfCustomControlLibrary1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WpfControlLibrary1;component/Dictionary1.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
And I have a UserControl1.xaml in WpfCustomControlLibrary1 like this.
**<UserControl x:Class="WpfCustomControlLibrary1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="450"
d:DesignWidth="800">
<!--Suggestion not working for MY_COLOR-->
<!--Please open the solution in VS 2013 and see the Suggestions working-->
<Button Background="{StaticResource MY_COLOR}" />
</UserControl>**
Every thing is OK. But the problem is Static resource suggestions not working in VS2019.
I'm opening the solution with VS2013. Suggestions working in VS2013

Related

Window style from an external (dll) resource dictionary doesn't apply in design mode

I have create a external control library which hosts some resource dictionaries etc. My problem is when I try to apply a style on a window element. Style's changes become visible only in running mode!!!
An example of the resource dictionary from my control library:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="Window_Style" TargetType="Window">
<Setter Property="Background" Value="#FF272727"/>
</Style>
</ResourceDictionary>
This is how I include my external resource dictionary into my app:
<Application x:Class="SigmaLibMaster.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SigmaLibMaster"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/SigmaLib;component/Resources/Styles/Window.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
And how I apply it to my window element:
<Window x:Class="SigmaLibMaster.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SigmaLibMaster"
mc:Ignorable="d"
Title="MainWindow" Height="480" Width="840"
Style="{DynamicResource Window_Style}">
<Grid >
</Grid>
</Window>
Any idea why is this happening?
PS: Please keep in mind that I recently switched from WinForms to WPF!!! :)
You can sometimes find that resources from libraries don't work at design time.
It's a bug IMO.
The work round I use is design time resources.
This is a mechanism which was originally intended for blend. But the wpf designer in visual studio is the same designer as blend now.
I have a library called uilib.
In the properties of that I add a resource dictionary called DesignTimeResources.xaml. It must be that name.
In the csproj I have the following:
<ItemGroup>
<Page Include="Properties\DesignTimeResources.xaml" Condition="'$(DesignTime)'=='true' OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)') AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true')">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
<ContainsDesignTimeResources>true</ContainsDesignTimeResources>
</Page>
Note particularly that ContainsDesignTimeResources tag.
That merges a bunch of resource dictionaries I have in uilib:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:UILib">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/UILib;component/Resources/Geometries.xaml"/>
<ResourceDictionary Source="pack://application:,,,/UILib;component/Resources/ControlTemplates.xaml"/>
<ResourceDictionary Source="pack://application:,,,/UILib;component/Resources/FontResources.xaml"/>
<ResourceDictionary Source="pack://application:,,,/UILib;component/Resources/UILibResources.xaml"/>
<ResourceDictionary Source="pack://application:,,,/UILib;component/Resources/HypsoColoursRD.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
It will not merge these resources in an extra time when you build. The conditions in the tags mean it's design time only.
You can probably find a bunch more on this by searching now you know it exists.
https://dennymichael.net/2016/07/28/wpf-design-time-resources-dictionary/

ColorZone doesn't drop shadow in WPF MaterialDesign

I try to make ColorZone in WPF using the MaterialDesign library. But when I set
materialDesign:ShadowAssist.ShadowDepth="Depth5"
it doesn't show any shadow. Below is a full code of the sample app where it doesn't work. Can anyone tell me what I am doing wrong?
I added MaterialDesignThemes to the project.
In app.xaml paste this:
<Application
x:Class="TestShadow.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestShadow"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<materialDesign:BundledTheme
BaseTheme="Light"
PrimaryColor="DeepPurple"
SecondaryColor="Lime" />
<ResourceDictionary
Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
And to MainWindow.xaml I added:
<Window
x:Class="TestShadow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TestShadow"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
Title="MainWindow"
Height="450"
Width="800">
<Grid>
<materialDesign:ColorZone
Mode="PrimaryDark"
Padding="16"
materialDesign:ShadowAssist.ShadowDepth="Depth5">
<TextBlock
Text="Material Design In XAML Toolkit"
VerticalAlignment="Center" />
</materialDesign:ColorZone>
</Grid>
</Window>
Result, no shadow:
Apparently there is some problem for the MaterialDesign current version. The only way I have found is to place the Card element under the ColorZone. In this case, the shadow becomes visible.

WPF: Mahapps Metro Watermark is not showing up

I am working on a program, and in the settings I want watermarks to tell the user what he can insert there. I used Mahapps Metro, but the watermarks didn't show up, so I created a blank project with only one textbox, but it still doesn't show up.
My Code:
<Controls:MetroWindow x:Class="TestWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:local="clr-namespace:TestWPF"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid Background="White">
<TextBox Controls:TextBoxHelper.Watermark="TestWater" Height="25" Width="200"/>
</Grid>
</Controls:MetroWindow>
The outcome:
(The background is actually "Wheat" to make the textbox more visible)
Am I missing anything why it doesn't work?
Add this in the App.xaml of the your WPF Project.
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
I've tried this and this is working fine after this.
Go through the documentation provided here.

Strange 'missing an assembly reference?' error in wpf user control library

i have below error in my C# wpf user control library :
Severity Code Description Project File Line Error CS0234 The type or
namespace name 'StylesTemplates' does not exist in the namespace
'MHToolkit'(are you missing an assembly reference?)'`
i have resource dictionary in the folder,
the error will be disappear when i Exclude StylesTemplate Folder from the project
and i am using it in usercontrol
this my user control code :
<UserControl x:Class="MHToolkit.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:MHToolkit"
xmlns:ST="clr-namespace:MHToolkit.StylesTemplates"
xmlns:VM="clr-namespace:MHToolkit.ViewModels"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<VM:MainViewModel x:Key="MainVM" />
</UserControl.Resources>
<UserControl.DataContext>
<Binding Source="{StaticResource MainVM}" />
</UserControl.DataContext>
<Grid>
</Grid> </UserControl>
i am using vs2014 and .net 4.5 .
i have no idea how to fix this error ?
any help will be appreciated
tanx in advance
image of solution explorer window below
Add CardViewStyle.xaml as the Resource Dictionary
Check the below code
Add this to the current Usercontrol
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MHToolkit;component/StylesTemplates/CardviewStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Otherwise you can add App.xaml file and used all apllication
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MHToolkit;component/StylesTemplates/CardviewStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Error visualizing Mahapps metro style

I'm trying to use the Mahapps's Metro Style v1.0 stable in VS2013 with Windows 7. According to the initial modification in the quick start section, the main window should look like this:
but instead look like this:
When I used version 0.7 worked fine.
Has anyone else experienced this?
Interesting fact:
The second image is what I get, it is saved in .jpeg, but when I saved the screenshot in .png format, it looks like this:
You should have always these basic stuff:
App.xaml
<Application x:Class="WpfApplication.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Window xaml
<controls:MetroWindow x:Class="WpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
Title="MainWindow"
Height="600"
Width="800">
<Grid>
<!-- now your content -->
</Grid>
</controls:MetroWindow>
Window xaml code behind
using System;
using MahApps.Metro.Controls; // MahApps.Metro reference
namespace WpfApplication
{
public partial class MainWindow : MetroWindow
{
public MainWindow()
{
InitializeComponent();
}
}
}
Hope this helps!
You can see how everything is implemented on very simple examples to GitHub MahApps.Metro
Surely you forgot to remove or add what is namespace in xaml page or not remove window parameters.

Categories

Resources