0

我们有一个名为 SelectorSwitchedControl 的控件,它使用 aSelector在子控件之间切换。按照简化的 Tab 控件的思路思考,但它使用ComboBoxorListBox代替选项卡。

我们正在尝试构建一个触发器,如果​​列表中有多个项目,我们需要显示选择器。

我唯一能想到的就是使用两个触发器,而不是一个。默认情况下,您使选择器在控件的模板中可见,然后创建两个单独的触发器来隐藏选择器:第一个条件测试零项,第二个条件测试 1 项。如果其中任何一个匹配,则选择器将隐藏。如果没有——即有两个或更多项目——那么它将保持可见。

它可以工作,但我想知道是否有任何方法可以使用单个触发器来创建这种行为,即使它是一个 MultiTrigger。但是 MultiTrigger 是一个“与”测试,而我们需要一个“或”测试。通常,您可以反转逻辑以将 MultiTrigger 的行为更改为“或”,但这需要属性本身是布尔值,因为单个测试没有“非”条件(即您不能说“属性”)不等于 0 也不等于 1')。

作为记录,我知道我可以轻松地使用转换器和/或代码隐藏作为解决此问题的一种方法,但我想知道是否有一种纯 XAML 方法可以做到这一点,因此这种行为可以是没有其他代码的样式依赖关系。

4

1 回答 1

1

是的,创建一个IValueConverterLessThanOrEqualConverter它将列表计数作为输入并根据列表计数大于 0 或 1 返回真或假。

然后,您可以使用单个触发器,该触发器适用于 0 和 1。

或者

只需拥有一个转换器LengthToBoolConverter并将您的可见性绑定到该转换器。Visibility.Collapsed如果长度小于或等于 1,转换器将返回,Visibility.Visible否则返回。

这样您就不必担心单次触发。转换器和绑定将为您做到这一点。

于 2013-11-07T19:34:19.547 回答