2014-07-04 110 views
0

我想將滑塊的Value綁定到標籤的Content。滑塊的值設置時間跨度。滑塊的值是以分鐘爲單位的時間跨度(值5 = 5分鐘)。格式化綁定屬性

這是我的標籤XAML:

<Label 
    Content="{Binding Value, ElementName=sld_Timespan}" 
    ContentStringFormat="{}{0:HH:mm}" 
/> 

我可以將它們綁定。值是正確的。但格式是錯誤的。

對於ContentStringFormat我嘗試了不同的設置,例如this (TextBlock in Silverlight)this (TextBlock Multibinding)網站。我還採用了數據綁定對話框,並將StringFormat設置爲{0:G}(您可以從ComboBox中選擇此選項)或其他設置。

我只得到一個值「格式化」爲雙倍,如「1」或「13.423523423」。

我也試過TextBlock。一樣的問題。

我的XAML代碼有什麼問題?

+0

您可能需要一個值轉換器。什麼是收到的錯誤? – Samuel

+0

@Samuel我沒有收到任何錯誤消息。我檢查了一下:我可以輸入所有內容,我沒有收到任何錯誤。看來,Visual Studio隱藏格式錯誤。 – fedab

+0

你檢查了visual studio的輸出標籤嗎?它可能包含一些關於綁定問題的信息等。 – Samuel

回答

0

克萊門斯的評論後,我明白了什麼是錯的。我寫了一個簡單的轉換:

public class DoubleToTimespanConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return TimeSpan.FromMinutes((double)value).ToString(@"hh\:mm\:ss"); 
    } 

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

,並添加到我的XAML:

<UserControl.Resources> 
    <!--local is my local namespace--> 
    <local:DoubleToTimespanConverter x:Key="converter"/> 
</UserControl.Resources> 

,我可以很容易地設置「轉換器」作爲我的轉換器。

+2

你可能更喜歡編寫'TimeSpan.FromMinutes((double)value)',如果你稍後看到它,這將更容易理解。 – Clemens

+0

@Clemens我改變了它。謝謝。 – fedab