XAML MultiBinding StringFormat

时间:2014-06-19 14:25:40

标签: c# wpf xaml

我无法弄清楚我的MultiBinding StringFormat行为。我有一个DataContext,它通过MinIncl和MaxIncl属性定义一个数值范围。我想使用MultiBinding创建一个工具提示来创建一个类似" 1.0到999.0"的提示。我尝试以下代码:

         <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>

生成的工具提示是&#34;到999.0 1.0&#34;。所以它已经扭转了范围并将“#34”这个词放到了#34;第一

如果我删除空格并尝试&#34; {} {0:F1}到{1:F1}&#34;,我会得到正确答案:&#34; 1.0to999.0&#34;。

说真的,为什么空白和单词&#34; to&#34;打破这个东西?

感谢。

-reilly。

1 个答案:

答案 0 :(得分: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>

对于奇怪的空白事物,不要抱歉。希望这会有所帮助,欢呼。