簡體   English   中英

如何指定XAML值(例如轉換器參數)文化

[英]How to specify XAML value (e.g. converter parameter) culture

當我們在XAML中使用靜態雙精度值時,我們如何指定它們以哪種格式提供?

例:

<Rectangle>
  <Rectangle.Opacity>
    <Binding Path="IsDimmed" Converter="{StaticResource boolToDoubleConverter}" ConverterParameter="0.8"/>
  </Rectangle.Opacity>
</Rectangle>

用轉換器方法

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
   return double.Parse((string)parameter, culture);
}

的問題是,一台機器,其中小數由上分離, ,轉換方法分別失敗或返回一個錯誤的值。

我不想在Parse()方法中設置InvariantCulture,因為轉換器可能在某個地方用於解析用戶輸入,這就是應該仍然應用culture參數的原因。

如果我使用<sys:Double x:Key="dimValue">0.8</sys:Double>將值指定為資源,則converter參數將變為double類型,但在解析之前會轉換為字符串。

所以我想以某種方式指定,該值以en-GB格式表示,如ConverterParameter="0.8" ConverterParameterCulture="en-GB"/>

這可能不需要創建一個浮腫的MultiValueConverter嗎?

您可以使用Binding ConverterCulture屬性來實現此目的:

<Binding Path="IsDimmed" Converter="{StaticResource boolToDoubleConverter}" 
         ConverterParameter="0.8" ConverterCulture="en-GB"/>

有時我用:

<TextBlock Grid.Column="3" Margin="3" Text="{Binding [Value], Mode=OneTime, StringFormat={}{0:N2}, ConverterCulture={x:Static glob:CultureInfo.CurrentCulture}}" HorizontalAlignment="Right" />

glob是:

xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM