locked
Silverlight4 stringformat RRS feed

  • 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 Community
    Mittwoch, 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 Community
    Mittwoch, 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