我的WPF应用程序中有一个要求我在水平位置有两个TextBlock
<StackPanel Orientation="Horizontal" >
<TextBlock FontSize="20" Text="{Binding FileName}" VerticalAlignment="Top" Height="28" HorizontalAlignment="Left" MaxWidth="450" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" />
<TextBlock FontSize="20" Text="{Binding FileExt}" VerticalAlignment="Top" Height="28" HorizontalAlignment="Left" MaxWidth="50" Visibility="{Binding }" TextWrapping="NoWrap" />
</StackPanel>
在ViewModel中我有两个属性集FileName
和FileExt
,但我希望textBlock2被绑定到FileExt
属性,只有当textBlock1宽度越过{时才会显示{1}}(大小450),然后只有TextBlock2可见。
我可以知道我的方法是什么吗?第一个文本块实际上是一个fileName。假设文件名为“BOOKOFWPF.pdf”,那么它不会越过最大长度,所以我不需要显示FileExt textBlock,但是如果文件名足够长以适应那么MaxWidth
我我已经实现了这种情况,我需要显示FileExt文本块。
请帮忙
答案 0 :(得分:1)
如果我理解了你想要达到的目标,哪个不容易:
也许你应该在ViewModel中做到这一点。
public bool HasCrossed { get { return this.FileName.Length > XXX; } }
第二个文本块的可见性:
[...]
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
[...]
Visibility="{Binding HasCrossed,
Converter={StaticResource BooleanToVisibilityConverter}}"
不要忘记在FileName的setter中为PropertyChanged
属性引发HasCrossed
。