2011-12-04 28 views
19

我试图在使用Label控件的XAML中显示一个字符串。以下是我的XAML代码:使用MultiBinding的字符串格式?

<Label Height="28" HorizontalAlignment="Left" Margin="233,68,0,0" Name="label13" VerticalAlignment="Top"> 
    <Label.Content> 
     <MultiBinding StringFormat="{}{0} x {1}"> 
       <Binding Path="Width" /> 
       <Binding Path="Height" /> 
     </MultiBinding> 
    </Label.Content> 

宽度和高度都是我的电影类的两个属性。 我想要标签显示:“宽x高”前。 800 x 640 但是,标签控件仍为空。任何帮助表示赞赏。 我想这样做而不使用转换器。


我通过使用TextBlock而不是Label来修改我的xaml。但它仍然不会填充显示输出。

<TextBlock Height="28" HorizontalAlignment="Left" Margin="233,68,0,0" Name="label13" VerticalAlignment="Top"> 
       <TextBlock.Text> 
        <MultiBinding StringFormat="{}{0} x {1}"> 
         <Binding Path="Width" /> 
         <Binding Path="Height" /> 
        </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
+1

你看这个吗? http://stackoverflow.com/questions/4010772/binding-stringformat –

+0

你有没有为你的班级电影实现INotificationChanged接口?你的绑定是否正确? (看看vs输出窗口) – punker76

回答

66

您试图将字符串绑定到对象。但是StringFormat要求它的目标是一个字符串类型。

尝试把一个TextBlock你的标签内容和数据绑定到它

<StackPanel> 
    <Slider x:Name="sl1" Minimum="10" Maximum="100"/> 
    <Slider x:Name="sl2" Minimum="10" Maximum="100"/> 
    <Label x:Name="label13" Background="Yellow" Foreground="Black"> 
    <Label.Content> 
     <TextBlock> 
      <TextBlock.Text> 
      <MultiBinding StringFormat="{}{0} x {1} Test"> 
       <Binding ElementName="sl1" Path="Value" /> 
       <Binding ElementName="sl2" Path="Value" /> 
      </MultiBinding> 
      </TextBlock.Text> 
     </TextBlock> 
    </Label.Content> 
    </Label> 
</StackPanel> 

编辑 类电影必须实现INotificationPropertyChanged接口和你的两个属性必须与其proprty提高属性更改事件名字!

希望这有助于