2017-07-27 62 views
2

我想將滑塊的值從小數轉換爲2位整數。基本上,我想要使用:F2將其僅保留2位小數,然後乘以100.我無法弄清楚如何乘以100。如何對字符串中引用的綁定數據執行操作

我該怎麼做?

XAML:

<Label Text="{Binding Source={x:Reference Slider}, 
         Path=Value, 
         StringFormat='Font Size: {0}'}"/> 
<Slider x:Name="Slider"/> 

回答

1

的方法之一是在代碼中創建一個新的值轉換器,並引用它作爲一個靜態資源。這種方法將實現代碼內的任何類型的轉換以及傳遞給轉換器的任何類型的參數。

下面的文章描述了三元運營商如何在C# https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator

希望它能幫助!

XAML:

<Window.Resources> 
    <local:SliderValueMultiplier x:Key="multiplier"/> 
</Window.Resources> 
<StackPanel> 
    <Label Content="{Binding Source={x:Reference Slider}, Path=Value, 
          Converter={StaticResource multiplier}, 
          ConverterParameter=100}"></Label> 
    <Slider x:Name="Slider"></Slider> 
</StackPanel> 

C#代碼:

public class SliderValueMultiplier : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (parameter == null) return 0; 
     double.TryParse(parameter.ToString(), out double multiplier); 
     return value != null ? Math.Round((double) value, 2) * multiplier : 0;   
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

免責聲明:代碼只是您的解決方案可能是什麼樣子的例子。如果沒有額外的測試,它永遠不應被視爲生產準備。

+1

嘿,非常感謝你的回答。我希望有一個更簡單的方法來做到這一點,就像在我的代碼中添加一個* 100的地方一樣,但這不是太糟糕。唯一的是我不明白返回值!= null? Math.Round((double)值,2)*乘數:0;線。我不熟悉問號和冒號。這可能是一個非常基本的問題,但是我自學成就了我的編程知識中的很多漏洞。所以如果你可以向我解釋這一點,那會很棒。謝謝 – user65909

+0

@ user65909最好的解決方法是像C#編譯器這樣想,你從最左邊開始。 'return'可能很簡單,它定義了方法返回的內容。下一個表達式稱爲三態條件運算符,它在'?'之前具有一個布爾條件,如果該條件爲真,在'?'之後和之前評估/返回':'之前的左表達式,以及如果條件爲假,介於':'和';'之間。你可以在這裏閱讀https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator。 –

+0

啊,我現在看到了。它簡潔如果/其他。非常感謝你解釋。 – user65909

相關問題