2010-10-19 67 views
22

我已經將滑塊控件的工具提示綁定到它的Value屬性,我試圖使用StringFormat使其顯示「10的當前值{0}」,其中{ 0}是Value屬性。下面是我試圖解決這個問題時嘗試的各種事情之一。wpf - 使用字符串文字在標籤上綁定stringformat

<Slider.ToolTip> 
    <Label> 
    <Label.Content> 
     <Binding StringFormat="Current Value {0} of 10" 
       ElementName="DebugLevelSlider" 
       Path="Value" /> 
    </Label.Content> 
    </Label> 
</Slider.ToolTip> 

我有問題在線查找如何使用stringformat與字符串文字,如上面我的例子。我看到很多stringformat的日期/時間/貨幣格式轉換。我想我有一種方法可以通過多重綁定來實現,但它看起來像是額外的工作量。我希望對於字符串文字格式,我仍然不必編寫自定義轉換器。

在我的應用程序中,我發現自己在項目旁邊使用了很多額外的標籤,因此在stringformat中獲得理解將有望讓我消除一些不必要的標籤。

回答

32

對於工具提示,您可以查看WPF binding with StringFormat doesn't work on ToolTips

就上面指定的StringFormat而言,您必須轉義您的字符串。

StringFormat="{}Current Value {0} of 10" 

這裏有一堆StringFormat的例子。 http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

+1

我仍然不能得到綁定到我的滑塊的Value屬性工作但是當我將工具提示綁定到滑塊綁定的變量時,它會起作用。也許值不是可綁定滑塊屬性..hmm – TWood 2010-10-19 14:39:41

94

Label.Content爲對象,所以你不能使用Binding.StringFormat那裏綁定的目標類型必須爲string,以便爲它工作。

兩個解決方法是:使用TextBlock而不是Label並綁定Text屬性。

使用Label.ContentStringFormat

<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} /> 

你只需要逃避string{},如果你的第一個字符是{

+0

日期可以在這裏格式化,如下所示:「開始日期:{0:dd-MM-yyyy}」 – 2012-11-24 22:35:31