У меня есть то, что я считал простым требованием, но мне трудно понять, как это сделать.Складной «список» связанных элементов в WPF
Я привязки к адресу (Line1, Line2, Line3, Line4, например)
То, что я хочу сделать, это дисплей
Line1
Line2
Line3
Line4
Но если строка пуста или нулевой, я хотел бы „коллапс“:
Line1
Line3
Line4
Я попытался StackPanel с TextBlocks - но я не работал, как получить TextBlocks к „исчезнуть“, если они пусты.
<StackPanel>
<TextBlock Text="{Binding Line1}"></TextBlock>
<TextBlock Text="{Binding Line2}"></TextBlock>
<TextBlock Text="{Binding Line3}"></TextBlock>
<TextBlock Text="{Binding Line4}"></TextBlock>
</StackPanel>
Я также попытался MultiBinding, но я не могу работать, как получить строку в StringFormat.
<TextBlock>
<TextBlock.Text>
<!-- Doesn't work: "System.FormatException" -->
<MultiBinding StringFormat="{}{1}\n{2}\n{3}\n{4}">
<Binding Path="Line1"/>
<Binding Path="Line2"/>
<Binding Path="Line3"/>
<Binding Path="Line4"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Любые идеи?
Это ужасно, но я думаю, что предпочитаю, потому что я не хочу, чтобы мой класс беспокоился о том, как будут отображаться данные. – Benjol
Кроме того, если вы 't хотите исключить любой глобальный стиль, применяемый к TextBlock, добавьте BasedOn = "{StaticResource {x: Type TextBlock}}" в вашу декларацию стиля (я думаю, что у меня все в порядке). –
@Benjol: если вы используете MVVM, это становится намного более естественным. Это означает, что ваша VM беспокоится о том, как вещи отображаются, и для этого будет иметь свойство только для чтения. –