在 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?
Visual Studio 2015 无法识别 OTF 转换字体 (UWP)
如何从 Catel 项目迁移到 Orchestra + MahApps? (.NET 4.0)