I'm working on WinForms app localization. For UI elements I have .resx files in which I'm writing localized strings. The problem is with Infragistics controls. I can't get for example items names in toolbars to which I can refer in .resx file. I'm looking for solution for some time, but unsuccessfully. Do anyone have an idea how to resolve this?
To localize Infragistics for Windows Forms controls you may use their Resource Strings. Check here how to apply customized strings, and here for all the UltraToolbarsManager resource strings.
Related
I can't find any method of extracting string values from xaml (Silverlight) to a resource file. Do I really have to do this manually?
If this is not supported in VS2010, are there any 3rd party tools which offers help on this issue?
Building and maintaining resource files for localization purposes is quite tedious if you have to do this manually.
This should do the trick: http://wpflocalizeaddin.codeplex.com/
XAML is just XML, so you can write an XML parser in a Winforms app to find all the strings.
We did away with the need for the resources using a different technique (based on attached properties):
Link: Localisation of Silverlight projects after completion
WPF controls get their default styles, colors and brushes from a theme (Usually, in PresentationFramework.Aero.dll).
What piece of loads this assembly? And where are the resource dictionary stored?
I have my own WPF custom themes and load them in the Application.Current.Resources.MergedDictionary.
However, this does not work if the WPF themed control is hosted in Windows Forms since Application.Current is null.
Is there a way to do something similar to what WPF does? If so, what is it?
You cannot use the WPF themes in Winforms because they are two different technologies. There isn't a similar theme mechanism in Winforms natively. You can use third-party controls that support themes in Winforms. The most notable of these are the tools from Infragistics and Telerik.
Bottom line answer is no, there isn't.
Can you try just adding the theme to the control instead of the Application?
control.Resources.MergedDictionaries.Clear();
control.Resources.MergedDictionaries.Add(resourceDictionary);
(answering my own question)
The way to load a resource dictionary as a theme is to add it to the list of merged dictionaries of the generic.xaml resource dictionary.
There is no other way to load a resource dictionary as a theme.
This works fine when used from WinForms
I've just begun dabbling in putting together a set of controls as assemblies and I'm working on default styling. What I currently have is a UserControl in a project (thanks Reed!) and I'm able to bring that into another project via reference. I plan to add more controls over time to build something of an SDK.
I currently have some hooks that look for resources in the hosting application which either apply the resources to their respective properties, or style out the control via hard coded defaults.
Is it possible to set up resource dictionaries within the project containing the UserControls so they can use those references as the default, instead of hard coding? If so, how do I target them?
(I have a ResourceDictionary set up within the same project as the controls: Resources>Dictionaries>Colors.xaml)
Thanks in advance!
E
You should really look at creating custom templated controls in library rather than derivatives of UserControls. This will allow projects that reference your library to specify an alternative default style for you controls in the same way as we can for the controls in Microsofts own SDK.
The Creating a New Control by Creating a ControlTemplate topic on MSDN is good starter.
I think this is a better explanation, but i'm trying on a desktop application and i got the same problem.
XamlParseException: Failed to create a 'System.Type' from the text 'local:CustomerEntity'
If I'm undestanding correctly you want to create the file "generic.xaml" in the folder "Themes". However, I don't believe automatic styling works with UserControl only with Control. Generally if you trying to make a control that can be stylized and retemplated you want to inherit from Control and not UserControl.
Does anybody know of a gallery of controltemplates, that I could use to learn more about what is possible with the different control types?
look at : https://github.com/jogibear9988/wpftoolkit
I've forked the Theming Package from Codeplex and switched to .Net 4.0
I'm not familiar with a gallery of control templates, though there are lots of examples on the internet. If you have a specific control you'd like to template (e.g. a ListBox or a Button), I would search for specific control templates that relate to that control. You will find countless options.
If you want to learn about what is possible with control templates, I'd suggest picking up one of the many great WPF books. A few I'd recommend are:
WPF Unleashed (by Adam Nathan)
Applications = Code + Markup by (Charles Petzold)
WPF Control Development Unleashed (by Pavan Podila and Kevin Hoffman)
You can completely recreate the visual tree of an element with a control template, so the possibilities are limitless. You can also check out the MSDN Help Topics on control styles and templates:
Control Styles and Templates
Using Templates to Customize WPF Controls
Hope that helps.
There's this one
http://www.xamltemplates.net/
There's this one
http://www.reuxables.com/
There's this one
http://www.codeplex.com/Silverlight/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%203&referringTitle=Home
As a word of warning, all templates are not created equal - and not all templates will work across all XAML frameworks. For example if it is written for SL it may not work for WinRT. The same for WPF. But this list will get you started. In the end, you will probably create your own.
I am starting a new application in WPF and I am curious how to handle Localization? In WinForms you can use resx strings for the UI text, how is this done in WPF? Is there a special binding syntax for binding to resx resources or is there a different way of doing this?
Thanks!
A simple way is to use a MarkupExtension.
https://www.wpftutorial.net/LocalizeMarkupExtension.html
With this tutorial you can implement it yourself.
Or you can use a nuget package.