c# - 找不到转换器的资源
问题描述
我正在尝试切换窗口的可见性。我已经将一个布尔对象绑定到我的 ViewModel 并有一个转换器来处理可见性切换。该项目将运行,但会立即出现异常“找不到名为'VisibilityConverter'的资源”。
我的 Windows.Resources xml 中的其他转换器可以很好地找到和使用。为什么找不到这个?知道我做错了什么吗?
Window x:Class="MyProject.Views.ControlPanel"
Height="650" Width="805" MinWidth="805"
Visibility="{Binding ControlPanelWindowBo.IsWindowVisible, Converter={StaticResource VisibilityConverter}}">
<Window.Resources>
<converters:BoolToIconConverter x:Key="BoolToIconConverter" />
<converters:BoolHomeTeamPossessionConverter x:Key="BoolHomeTeamPossessionConverter" />
<converters:BoolVisitorTeamPossessionConverter x:Key="BoolVisitorTeamPossessionConverter" />
<converters:VisibilityConverter x:Key="VisibilityConverter" />
</Window.Resources>
解决方案
这是因为VisibilityConverter
定义的级别(窗口级别)太深了。
您应该在您的中app.xaml
定义它并将其定义为应用程序资源:
<Application x:Class="stuff.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<converters:VisibilityConverter x:Key="VisibilityConverter" />
...and others.
</ResourceDictionary>
</Application.Resources>
</Application>
推荐阅读
- typescript - 如何制作具有对象价值的枚举?
- c# - 将 REST WebService 连接到 MySQL 数据库
- c++ - 调用 'Kt::Kt(int&, int)' 没有匹配的函数
- javascript - Change document title every x seconds in JavaScript
- linux - How to protect a file under a writable directory
- ios - 无法使用 expo 从 iphone 设备获取到我的本地主机 - 反应原生
- vala - Vala get file modification date
- c++ - 需要将数字与字符串分隔在一行上,用';'分隔,(25;16;67;13)在c++中
- java - 错误:任务“:app:mergeDebugJavaResource”执行失败
- android - 发生滑动时如何在 ViewPager2 中关闭 ExoPlayer 实例