Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF with PRISM:如果不包括其他类型的资源,则在运行应用程序时找不到某些类型的资源_C#_Wpf_Prism - Fatal编程技术网

C# WPF with PRISM:如果不包括其他类型的资源,则在运行应用程序时找不到某些类型的资源

C# WPF with PRISM:如果不包括其他类型的资源,则在运行应用程序时找不到某些类型的资源,c#,wpf,prism,C#,Wpf,Prism,我发现Microsoft PRISM(PRISM.Wpf 7.2和PRISM.Unity 7.2)Wpf MVVM应用程序(.NET Framework 4.7.2或Dotnet Core 3.1)的App.xaml文件中的资源存在问题。如果App.xaml仅包括某些类型(现在不包括确切的类型),如BooleantVisibilityConverter作为资源: <unity:PrismApplication x:Class="WPF_XAML_Resource_Test.App"

我发现Microsoft PRISM(PRISM.Wpf 7.2和PRISM.Unity 7.2)Wpf MVVM应用程序(.NET Framework 4.7.2或Dotnet Core 3.1)的App.xaml文件中的资源存在问题。如果
App.xaml
仅包括某些类型(现在不包括确切的类型),如
BooleantVisibilityConverter
作为资源:

<unity:PrismApplication x:Class="WPF_XAML_Resource_Test.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:unity="http://prismlibrary.com/">
    <Application.Resources>
        <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
    </Application.Resources>
然后不会抛出异常


有人能解释一下为什么我没有包含虚拟的
SolidColorBrush
资源时会出现异常吗?

我也遇到过同样的问题,但您的解决方法对我没有帮助。我将转换器转换为静态,并将其用作静态资源

代码如下:

public class BoolToVisibilityConverter : IValueConverter
{
    public static BoolToVisibilityConverter Instance { get; private set; }

    static BoolToVisibilityConverter()
    {
        Instance = new BoolToVisibilityConverter();
    }
    private BoolToVisibilityConverter() { }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
xaml:


我仍然无法找出问题所在,只是资源顺序不能互换。就我而言,这不是问题所在,因为我的App.Xaml ResourceDictionary中的第一项就是BooltVisibilityConverter。

我也遇到过同样的问题,但您的解决方法对我没有帮助。我将转换器转换为静态,并将其用作静态资源

代码如下:

public class BoolToVisibilityConverter : IValueConverter
{
    public static BoolToVisibilityConverter Instance { get; private set; }

    static BoolToVisibilityConverter()
    {
        Instance = new BoolToVisibilityConverter();
    }
    private BoolToVisibilityConverter() { }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
xaml:

我仍然无法找出问题所在,只是资源顺序不能互换。在我的例子中,这不是问题,因为我的App.Xaml ResourceDictionary中的第一项就是BooltVisibilityConverter

public class BoolToVisibilityConverter : IValueConverter
{
    public static BoolToVisibilityConverter Instance { get; private set; }

    static BoolToVisibilityConverter()
    {
        Instance = new BoolToVisibilityConverter();
    }
    private BoolToVisibilityConverter() { }

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
<Border Visibility="{Binding Path=IsChecked, RelativeSource={RelativeSource AncestorType=ToggleButton}, Converter={x:Static converters:BoolToVisibilityConverter.Instance}}"/>
xmlns:converters="clr-namespace:MyAssemblyName.Converters"