我在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概念来涵盖这个用例?
答案 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>