2014-06-19 2 views
2

MultiBinding StringFormat 비헤이비어를 이해할 수 없습니다. MinIncl 및 MaxIncl 속성을 통해 숫자 범위를 정의하는 DataContext가 있습니다. MultiBinding을 사용하여 "1.0 to 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'은 OK입니다. 문제가 귀하의 질문에 표시되는 코드 외부에있는 것 같습니다. –

+1

@fmunkert : 당신이 옳았다. 내 툴팁은 Extended WPF Toolkit (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

걱정하지 마라, 내가 너를 쳐다 보았 더라면 어쨌든 옳은 것처럼 보였으 나,이 물건에 관해서는 아무것도 테스트 할 시간이 없었다. 보통은 항상 다른 방법이있다. –