Строковой формат с использованием мультибинга?
-
28-10-2019 - |
Вопрос
Я пытаюсь отобразить строку в XAML, используя управление меткой. Ниже приведен мой код 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>
Ширина и высота являются двумя свойствами моего класса фильма. Я хочу, чтобы этикетка отображала: «Ширина x высота». 800 x 640 Однако контроль метки остается пустым. Любая помощь ценится. Я хочу сделать это без использования конвертера.
Я изменил свой XAML, используя TextBlock вместо метки. Но все же он не заполняет отображение вывода.
<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>
Решение
Вы пытаетесь привязать строку с объектом. Но StringFormat требует, чтобы его цель была типом строки.
Попробуйте поместить текстовый блок в содержимое вашей метки и привязайте к нему ваши данные
<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, и ваши два свойства должны поднять измененное событие свойства с их именами!
надеюсь это поможет