-1

我的 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但我想要绑定到FileExt属性的 textBlock2,只有当 textBlock1 宽度超过MaxWidth(大小 450)时才会显示它,然后只有 TextBlock2 可见。

我可以知道我的方法是什么吗?第一个文本块实际上是一个文件名。假设文件名是“BOOKOFWPF.pdf”,那么它不会超过最大长度,所以我不需要显示 FileExt textBlock,但如果文件名足够长以适合然后,因为它是TextTrimming="CharacterEllipsis"我已经实现的所以在这个情况下我需要显示 FileExt 文本块。

请帮忙

4

1 回答 1

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

于 2013-10-10T11:02:33.743 回答