2014-03-18 48 views
0

我正在嘗試遵循this教程,但我不清楚EnumMatchToBooleanConverter課程的代碼應該放在哪裏。我認爲它會出現在代碼隱藏文件(即view.xaml.cs)中,但是當我嘗試在XAML中聲明資源時,我收到了沿着The type EnumMatchToBooleanConverter was not found的錯誤。WPF的窗口/用戶控件資源的代碼在哪裏?

回答

0

EnumMatchToBooleanConverter在這種情況下是它自己的類。你應該可以在現有的代碼背後聲明它,但我會堅持它自己的文件,以確保。 Visual Studio在查找資源時可能很笨,所以如果仍然顯示錯誤,則應重建該項目。

0

轉換器(與所有其他類一樣)屬於它們自己的文件。

然後,你只需要在你的XAML命名空間:

xmlns:local="clr-namespace:MyNamespace" 

另外,嘗試重建/運行的應用程序的XAML「智能感知」往往不會更新什麼是在命名空間,直到建立已經發生。

1

在一般情況下,一個小WPF項目應具有以下近似的文件夾結構:

  • 項目名
    • 轉換器
    • 數據訪問
    • 數據類型
    • 圖片
    • 的ViewModels
    • 查看

轉換器是您存儲您的Converter類的文件夾。在開發WPF一段時間後,你會發現你的Converter類的集合將會增加。這些文件夾中的每一個都包含我們映射到相關名稱空間的類。在Converter類的情況下,通常是這樣的:

namespace ProjectName.Converters 
{ 
    [ValueConversion(typeof(bool), typeof(Brush))] 
    public class BoolToBrushConverter : IValueConverter 
    { 
     ... 
    } 
} 

對於DataTypes類,你會使用類似:

namespace ProjectName.DataTypes 
{ 
    public class SomeDataType 
    { 
     ... 
    } 
} 

由於@LordTakkera正確提到的,你會然後需要定義一個XAML命名空間,像這樣來引用XAML這些類:

xmlns:Converters="clr-namespace:ProjectName.Converters" 

然後,你可以定義ConverterResources部分是這樣的:

<Converters:BoolToBrushConverter x:Key="BoolToBrushConverter" /> 

Data Binding Overview頁面上MSDN的數據轉換部分獲取更多信息。 MSDN上的IValueConverter interface頁面是另一個有用的資源。