2015-01-12 39 views
2

我在一個dll文件MicroMVVM中有一個EnumToBool轉換器類。我想在我的WPF應用程序的XAML中導入並創建這個類的資源。以下是我在XAML中的聲明:從dll導入轉換器到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-namespace」中收到錯誤。錯誤是「未定義的CLR命名空間。'clr命名空間'URI是指未包含在程序集中的命名空間'MicroMVVM'。

我在我的解決方案中添加了MicroMVVM.dll的引用,並且正在使用。其他類視圖模型的dll不過,我試圖在XAML中使用它得到錯誤請幫助

以下是轉換器類內部結構是如何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

驗證器的命名空間。 – Jawahar

+0

我也包含了Converter類,名字空間是正確的。請看一下。 –

+0

我是否需要在AssemblyInfo.cs中添加程序集MicroMVVM才能使用XAML? –

回答

0

有一個分號之間的空格和單詞程序集在你的前綴聲明中。這會使語法錯誤。嘗試刪除該空間並重試。

+0

刪除了空間,仍然收到未定義的clr命名空間錯誤。請幫忙。 –

2

試圖改變這一點:

xmlns:micro="clr-namespace:MicroMVVM; assembly=MicroMVVM" 

到:

xmlns:micro="clr-namespace:MicroMvvm;assembly=MicroMVVM"