Формат строки с использованием MultiBinding? - PullRequest
26 голосов
/ 04 декабря 2011

Я пытаюсь отобразить строку в XAML, используя элемент управления Label.Ниже приводится мой код XAML:

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

Ширина и высота - два свойства моего класса Movie.Я хочу, чтобы на этикетке отображалось: "Ширина х Высота", напр.800 x 640 Однако элемент управления этикеткой остается пустым.Любая помощь приветствуется.Я хочу сделать это без использования конвертера.


Я изменил свой xaml, используя TextBlock вместо Label.Но все равно он не будет заполнять вывод на экран.

<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 Ответ

77 голосов
/ 05 декабря 2011

вы пытаетесь привязать строку к объекту. Но 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>

EDIT ваш класс Movie должен реализовывать интерфейс INotificationPropertyChanged, а ваши два свойства должны вызывать событие измененного свойства со своими собственными именами!

надеюсь, это поможет

...