我在一个dll文件MicroMVVM中有一个EnumToBool Converter类。我想在我的WPF应用程序的XAML中导入并创建此类的资源。以下是我在XAML中的声明:
<Window x:Class="WpfMVVM.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfMVVM"
xmlns:micro="clr-namespace:MicroMVVM;assembly=MicroMVVM"
Title="MainWindow" Height="350" Width="525" ContentRendered="Window_ContentRendered">
<Window.DataContext>
<!-- Declaratively create an instance of our SongViewModel -->
<local:SabrixQAViewModel />
</Window.DataContext>
<Window.Resources>
<micro:EnumToBoolExtension x:Key="EnumToBool" />
</Window.Resources>
我在&#34; clr-namespace&#34;中收到错误。错误是&#34;未定义的CLR名称空间。&#39; clr-namespace&#39; URI指的是未包含在程序集中的名称空间&#39; MicroMVVM。
我在我的解决方案中添加了MicroMVVM.dll的引用,我在ViewModel中使用了其他类的dll。但是,我在尝试在XAML中使用它时遇到错误。请帮忙。
以下是Converter类在MicroMVVM中的外观:
namespace MicroMvvm
{
public enum ValidationMode
{
GSS,
Digital
}
[ValueConversion(typeof(bool), typeof(Enum))] //This is converting boolean value to a value in Enum
public class EnumToBoolExtension : MarkupExtension, IValueConverter
{
#region IValueConverter
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return parameter.Equals(value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((bool)value) == true ? parameter : DependencyProperty.UnsetValue;
}
#endregion
#region MarkupExtension
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
#endregion
}
}
答案 0 :(得分:2)
尝试改变这一点:
xmlns:micro="clr-namespace:MicroMVVM; assembly=MicroMVVM"
为:
xmlns:micro="clr-namespace:MicroMvvm;assembly=MicroMVVM"
答案 1 :(得分:0)
前缀声明中分号与汇编之间有一个空格。这将使语法错误。尝试删除该空格,然后重试。