在 UWP 应用中使用 Catel 转换器

Posted

技术标签:

【中文标题】在 UWP 应用中使用 Catel 转换器【英文标题】:Using Catel Converters in UWP Apps 【发布时间】:2018-08-14 17:21:06 【问题描述】:

我正在尝试在 Catel.MVVM.Converters 命名空间中使用 BooleanToCollapsingVisibilityConverter,但 XAML 设计器找不到类型并中断构建:

XLS0414 找不到类型“converters:BooleanToCollapsingVisibilityConverter”。确认您没有丢失程序集引用,并且所有引用的程序集都已构建。

我已经重新启动了 Visual Studio,重建了项目,清除了构建缓存,并在一个空白的 UWP 项目中进行了尝试——但都无济于事。在普通代码中,实例化转换器没有问题。我一直紧跟Catel Documentation。我做错了什么?

重现问题的示例代码:

<controls:Page
    x:Class="App1.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:controls="using:Catel.Windows.Controls"
    xmlns:converters="using:Catel.MVVM.Converters"
    mc:Ignorable="d"
    Background="ThemeResource ApplicationPageBackgroundThemeBrush">

    <Grid>
        <Border Background="Black" Width="500" Height="500" Visibility="Binding Visible, Converter=converters:BooleanToCollapsingVisibilityConverter"/>
        <Button Command="Binding ToggleVisibility">Toggle Visibility</Button>
    </Grid>
</controls:Page>

【问题讨论】:

【参考方案1】:

通过将Converter声明为静态资源来解决问题:

<Page.Resources>
    <converters:BooleanToCollapsingVisibilityConverter x:Key="BoolToVisibilityConverter"/>
</Page.Resources>

并在以后使用它

Visibility="Binding Visible, Converter=StaticResource BoolToVisibilityConverter"

【讨论】:

以上是关于在 UWP 应用中使用 Catel 转换器的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# UWP 应用程序的非 UI 部分转换为 JavaScript?

将 Electron 应用程序转换为 UWP 应用程序

Visual Studio 2015 无法识别 OTF 转换字体 (UWP)

如何从 Catel 项目迁移到 Orchestra + MahApps? (.NET 4.0)

在 UWP 中将音频文件转换为 8000Hz 16Bit Mono Wav

UWP - 如何启动并行运行的多个任务?