2014-10-30 36 views
0

我有一个Silverlight应用程序,我使用MVVM。基于另一元素宽度的可见性转换器

我想显示或隐藏一个TextBlock,基于另一个元素的当前宽度(或窗口宽度至少...)。问题是,如果我减少我的窗口的宽度,我现在有2个文本,所以我需要隐藏在这种情况下的第二个文本块...

我是初学者,我知道如何使用从我的ViewModel的一个boolean VisibilityConverter,但不是这个样子......

回答

1

要绑定到另一个元素的属性,你会做这样的事情:

Visibility="{Binding ActualWidth, 
      ElementName=TheThingWhoseWidthYouAreBindingTo, 
      Converter={StaticResource WidthToVisibilityConverter}}" 

然后创建自己WidthToVisibilityConverter那取得宽度值并返回一个可见性值。

+0

Thx,但转换器仅在运行应用程序时使用(width ActualWidth = 0.0)。有没有一种方法可以在每次调整窗口大小时自动使用它? – Gab 2014-10-30 10:54:22

+0

如何从我的ViewModel跟踪控件的ActualWidth? – Gab 2014-10-30 11:33:23

+0

简短的回答,你不想跟踪虚拟机中的ActualWidth ...这绝对是一个显示属性,而不是VM想要担心的事情。也许你想以某种方式将它抽象出来,或者重新考虑你的设计。窗口缩小时为什么要隐藏第二个文本框?为什么不把它包装到第二行呢? – Mashton 2014-10-30 12:23:46

相关问题