无法找到转换器资源

时间:2018-08-27 20:14:56

标签: c# xaml mvvm

我正在尝试切换窗口的可见性。我已经将一个布尔对象绑定到我的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>

1 个答案:

答案 0 :(得分:1)

这是因为定义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>