Benutzer mit den meisten Antworten
Silverlight4 stringformat

Frage
-
Hallo,
jetzt wird ja auch stringformat unterstützt.
Wenn ich aber in der xaml Datei
Binding="{Binding Path=Saldo, StringFormat=C}"
wird die Währung als Dollar und nicht in Euro angezeigt.
Wie kriege ich das umgestellt, die CultureInfo sollte doch aus dem Browser kommen oder bin ich da falsch?
Gruß
Rolf
Mittwoch, 5. Mai 2010 16:55
Antworten
-
Alternativ zu den anderen Antworten ist auch das Setzen der Kultur im UserControl bzw. Page möglich, z.B. so:
<navigation:Page xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="SilverlightApplication1.Page7" 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" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="640" d:DesignHeight="480" Title="Kultur einstellen" xmlns:vm="clr-namespace:SilverlightApplication1" Language="de-DE">
--
Peter- Als Antwort markiert Rolf-Rostig Donnerstag, 6. Mai 2010 12:37
Donnerstag, 6. Mai 2010 09:49
Alle Antworten
-
Hallo Rolf,
Binding="{Binding Path=Saldo, StringFormat=C}"
wird die Währung als Dollar und nicht in Euro angezeigt.
Wie kriege ich das umgestellt, die CultureInfo sollte doch aus dem Browser kommen oder bin ich da falsch?
ich würde sagen, die Info kommt eher vom Clientsystem.
http://msdn.microsoft.com/de-de/library/cc853414.aspx
.NET Framework für Silverlight stellt Daten für die invariante Kultur bereit, ruft jedoch Informationen zu allen anderen Kulturen vom Betriebssystem ab. Daher können sich die für eine bestimmte Kultur verfügbaren Informationen unter verschiedenen Betriebssystemen und selbst bei verschiedenen Versionen desselben Betriebssystems unterscheiden. Manchmal sind überhaupt keine Daten verfügbar. In solchen Fällen werden Daten der invarianten Kultur verwendet. Entwickler sollten keine feste Annahmen zu den Werten bestimmter Eigenschaften oder bestimmter Objekte treffen, die von bestimmten Kulturen zurückgegeben werden.
http://msdn.microsoft.com/de-de/library/cc838238.aspx
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET CommunityMittwoch, 5. Mai 2010 17:32 -
Ergänze mal Deinen Binding-Ausdruck um einen Attribut-Wert für ConverterCulture:
Text="{Binding Path=Saldo, StringFormat=C, ConverterCulture=de-DE}"
- Als Antwort vorgeschlagen Stefan Falz Mittwoch, 5. Mai 2010 20:31
Mittwoch, 5. Mai 2010 17:39 -
Ergänze mal Deinen Binding-Ausdruck um einen Attribut-Wert für ConverterCulture:
Nett, kannte ich auch noch nicht :)
Dann noch zwei Links, die näher auf dieses Thema eingehen (hilft Rolf und anderen, die mal vor dem gleichen Problem stehen, evtl. später mal)
http://blogs.msdn.com/mikehillberg/archive/2008/05/29/trying-out-binding-stringformat.aspx
http://www.hinzberg.net/wpf/wpf/xamlstring.html
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET CommunityMittwoch, 5. Mai 2010 18:03 -
Alternativ zu den anderen Antworten ist auch das Setzen der Kultur im UserControl bzw. Page möglich, z.B. so:
<navigation:Page xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="SilverlightApplication1.Page7" 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" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="640" d:DesignHeight="480" Title="Kultur einstellen" xmlns:vm="clr-namespace:SilverlightApplication1" Language="de-DE">
--
Peter- Als Antwort markiert Rolf-Rostig Donnerstag, 6. Mai 2010 12:37
Donnerstag, 6. Mai 2010 09:49 -
Danke für die Hilfe,
die Antwort von Peter ist für mich die beste Lösung.
In der MainPage.xaml eingefügt, ist es auch für die anderen Seiten gültig.
Der Link aus der Antwort von Stefan wäre nicht schlecht, funktioniert aber leider nicht mit SL4 :(
static App()
{
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage
(CultureInfo.CurrentCulture.IetfLanguageTag)));
}Mit dieser Anweisung wird die Sprache der Anwendung der im Betriebssystem eingestellten Kultur angepasst. Der Parameter ConverterCulture='de-DE' im Binding ist jetzt nicht mehr nötig.
Gruß
Rolf
Donnerstag, 6. Mai 2010 12:46