【发布时间】:2015-03-09 20:50:37
【问题描述】:
我在 dll 文件 MicroMVVM 中有一个 EnumToBool 转换器类。我想在我的 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>
我在“clr-命名空间”中遇到错误。错误是“未定义的 CLR 命名空间。‘clr-namespace’ URI 引用了程序集中未包含的命名空间‘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
}
}
【问题讨论】:
-
验证转换器的命名空间。
-
我也包含了 Converter 类,命名空间是正确的。请看一看。
-
我是否需要在 AssemblyInfo.cs 中添加程序集 MicroMVVM 才能在 XAML 中使用它?