在App.xaml中进一步定义了重用元素

时间:2015-10-27 15:08:12

标签: wpf

我在App.xaml中声明了几个转换器,如下所示,但我正在重复自己,我真的想避免:

public interface MessageRepository extends JpaRepository<Message, Long> {
    List<Message> findByReceiveDateBetweenAndUser(Date from, Date to, User user);
}

正如您所看到的,<c:ConverterChain x:Key="IsNotNull"> <c:IsNullConverter /> <c:InvertBoolConverter /> </c:ConverterChain> <c:ConverterChain x:Key="HideWhenNull"> <c:IsNullConverter /> <c:InvertBoolConverter /> <c:BoolToFromVisibilityConverter FalseEquivalent="Hidden" /> </c:ConverterChain> <c:ConverterChain x:Key="CollapseWhenNull"> <c:IsNullConverter /> <c:InvertBoolConverter /> <c:BoolToFromVisibilityConverter FalseEquivalent="Collapsed" /> </c:ConverterChain> 可以在以下两个转换器链中重用,但是可以以某种方式声明吗?我想的是:

IsNotNull

是否有一些WPF概念来涵盖这个用例?

2 个答案:

答案 0 :(得分:1)

<c:ConverterChain x:Key="HideWhenNull">
  <DynamicResource  ResourceKey="IsNotNull"/>
  <c:BoolToFromVisibilityConverter FalseEquivalent="Hidden" />
</c:ConverterChain>

只要ConverterChain类支持嵌套。

答案 1 :(得分:0)

受到Khyads答案的启发,我选择了StaticResource而不是DynamicResource,因为不需要额外的开销动态暗示并且它对静态资源的效果很好:

<c:ConverterChain x:Key="HideWhenNull">
  <StaticResource ResourceKey="IsNotNull" />
  <c:BoolToFromVisibilityConverter FalseEquivalent="Hidden" />
</c:ConverterChain>