C# WPF with PRISM:如果不包括其他类型的资源,则在运行应用程序时找不到某些类型的资源
我发现Microsoft PRISM(PRISM.Wpf 7.2和PRISM.Unity 7.2)Wpf MVVM应用程序(.NET Framework 4.7.2或Dotnet Core 3.1)的App.xaml文件中的资源存在问题。如果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"
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"