逗号分隔的文本框中给出一个固定数量的属性的业务对象(人例如列表,并与性能的名字,姓氏,城市人的名单,系在列表框中
我想显示每个并且能够定义一个可以显示的数据模式。
现在的问题:我不想显示一个类似网格的结构,但希望只看到填充的文本框,并且它们应该被分隔开逗号:
“卡尔,米勒,芝加哥,法律”当所有字段都填满后,但 当市和部门空的时候“Harry,Manning” 未设置姓氏和城市时,“Maria,IT”。
哪种方法可以选择此任务? Regards
逗号分隔的文本框中给出一个固定数量的属性的业务对象(人例如列表,并与性能的名字,姓氏,城市人的名单,系在列表框中
我想显示每个并且能够定义一个可以显示的数据模式。
现在的问题:我不想显示一个类似网格的结构,但希望只看到填充的文本框,并且它们应该被分隔开逗号:
“卡尔,米勒,芝加哥,法律”当所有字段都填满后,但 当市和部门空的时候“Harry,Manning” 未设置姓氏和城市时,“Maria,IT”。
哪种方法可以选择此任务? Regards
使用触发器。
<ListBox ItemsSource="{Binding MyObjects}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel.Resources>
<Style TargetType="TextBlock" BasedOn="{DynamicResource x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="TextBlock.Text" Value="">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
<Trigger Property="TextBlock.Text" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed" />
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>
<TextBlock Text="{Binding FirstName}" />
<TextBlock Text="{Binding LastName}" />
<TextBlock Text="{Binding City}" />
<TextBlock Text="{Binding Department}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这个解决方案没有逗号,但我需要确切地知道你想让它看起来像之前我真的可以建议什么。
或者,使用MultiBinding
和IMultiValueConverter
。
解决了这个是这样的: 在XAML我有这样的结构:
...
<local:CaptionedTextBox Caption="{x:Static p:Resources.EMail}"
Text="{Binding EMail.Value}"
Visibility="{Binding EMail.Value,
Converter={StaticResource LengthToVisibilityConverter}}" />
<local:SeparatorBox Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource LastFilledToVisibilityConverter}}" />
<local:CaptionedTextBox Caption="{x:Static p:Resources.Mobile}"
Text="{Binding Mobile.Value,
UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding Mobile.Value,
Converter={StaticResource LengthToVisibilityConverter}}" />
<local:SeparatorBox Tag="HIDE" Visibility="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource LastFilledToVisibilityConverter}}" />
所以,基本上我有交替的文本和分隔的元素列表。
列表中的最后一个元素是TAG = HIDE的分隔符。
在转换器中,我只将TAG设置为不需要的分隔符设置为隐藏,最后设置所有分隔符关于标签的可见性。
嗨,你的解决方案是正确的不显示空的文本框。对于剩余的可见文本框,我想用逗号分隔它们,以便在城市是empyt时获得“Karl,Mayer,Legal”,当Firstname和Department为空时,我得到“Miller,Chicago” – klawusel
而且我需要单个文本框的每个属性,因为我想要仍然可以编辑它们,所以任何使用汇总字符串的解决方案都不够 – klawusel