2011-12-04 37 views
19

Tôi đang cố gắng hiển thị một chuỗi trong XAML bằng cách sử dụng điều khiển Nhãn. Sau đây là mã XAML của tôi:Định dạng chuỗi bằng 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> 

Width và Height là hai thuộc tính của Movie lớp học của tôi. Tôi muốn nhãn hiển thị: "Chiều rộng x Chiều cao" cũ. 800 x 640 Tuy nhiên, điều khiển nhãn vẫn trống. Bất kỳ trợ giúp được đánh giá cao. Tôi muốn làm điều này mà KHÔNG SỬ DỤNG CONVERTER.


Tôi đã sửa đổi xaml của mình bằng cách sử dụng TextBlock thay vì Nhãn. Nhưng nó vẫn không hiển thị đầu ra.

<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

Bạn có nhìn vào điều này không? http://stackoverflow.com/questions/4010772/binding-stringformat –

+0

bạn có triển khai giao diện INotificationChanged cho phim lớp của mình không? Binding của bạn có đúng không? (nhìn vào cửa sổ đầu ra so với) – punker76

Trả lời

66

bạn đang cố gắng liên kết chuỗi với đối tượng. Nhưng StringFormat yêu cầu mục tiêu của nó là một kiểu chuỗi.

thử đặt một TextBlock trong nội dung nhãn của bạn và liên kết dữ liệu của bạn để nó

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

EDIT lớp Movie của bạn phải thực hiện các giao diện INotificationPropertyChanged và hai thuộc tính của bạn phải nâng cao thay đổi sự kiện bất động sản với proprty của họ tên!

hy vọng điều này sẽ giúp