TextBlock Visibility绑定到另一个textBlock的宽度越过Maxwidth

时间:2013-10-10 10:49:40

标签: c# wpf xaml

我的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中我有两个属性集FileNameFileExt,但我希望textBlock2被绑定到FileExt属性,只有当textBlock1宽度越过{时才会显示{1}}(大小450),然后只有TextBlock2可见。

我可以知道我的方法是什么吗?第一个文本块实际上是一个fileName。假设文件名为“BOOKOFWPF.pdf”,那么它不会越过最大长度,所以我不需要显示FileExt textBlock,但是如果文件名足够长以适应那么MaxWidth我我已经实现了这种情况,我需要显示FileExt文本块。

请帮忙

1 个答案:

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