2014-06-19 119 views
2

我找不出我的MultiBinding StringFormat行爲。我有一個DataContext,它通過屬性MinIncl和MaxIncl定義一個數字範圍。我想創建一個工具提示使用MultiBinding來創建一個像「1.0到999.0」的提示。我嘗試以下代碼:XAML MultiBinding StringFormat

  <ToolTipService.ToolTip> 
     <StackPanel> 
      <TextBlock> 
       <TextBlock.Text> 
       <MultiBinding StringFormat="{}{0:F1} to {1:F1}"> 
        <Binding Path="SelectedTrainingScriptParameter.MinimumInclusive"/> 
        <Binding Path="SelectedTrainingScriptParameter.MaximumInclusive"/> 
       </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
     </StackPanel> 
    </ToolTipService.ToolTip> 

生成的工具提示爲「至999.0 1.0」。所以它已經改變了範圍並且首先將「to」這個詞放到了。

如果我刪除空格並嘗試「{} {0:F1}到{1:F1}」,我會得到正確的答案:「1.0to999.0」。

說真的,爲什麼空白和單詞「to」會破壞這件事?

謝謝。

-reilly。

+3

我測試了你發佈的XAML,並且(至少對我來說),我的工具提示顯示「1.0到999.0」(用.NET 4.5和.NET 3.5試用)。因此,您使用的'StringFormat'確定。該問題似乎超出了您在問題中顯示的代碼範圍。 –

+1

@fmunkert:你說得對。我的工具提示來自擴展WPF工具包(http://wpftoolkit.codeplex.com/wikipage?title=DoubleUpDown)中的DoubleUpDown控件。當我在TextBox上使用相同的綁定時,它工作正常。我從來沒有想過檢查控制... – Reilly

回答

1

在這種情況下,你不需要一個多,只需使用相同的TextBlock而不是像;

<TextBlock> 
    <Run Text="{Binding Path=SelectedTrainingScriptParameter.MinimumInclusive}"/> 
    <Run Text="to"/> 
    <Run Text="{Binding Path=SelectedTrainingScriptParameter.MaximumInclusive}"/> 
</TextBlock> 

或者如果你真的想按原樣使用它;

<TextBlock> 
    <TextBlock.Text>  
     <MultiBinding StringFormat="{}{0} to {1}"> 
      <Binding Path="SelectedTrainingScriptParameter.MinimumInclusive}" /> 
      <Binding Path="SelectedTrainingScriptParameter.MaximumInclusive" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

至於怪異的空白的東西,不知道對不起。希望這有助於,歡呼。

+0

W:我用你的建議作爲修復,它的工作原理。如果你看看我對上面fmunkert的評論,結果發現奇怪的格式是由封閉的自由控制完成的。謝謝你的幫助。 – Reilly

+0

不用擔心,當我看着你的時候,它看起來也是正確的,但是我沒有時間去測試任何東西,但是對於這個東西來說一件很酷的事情,儘管通常總是有另一種方式。 –