【发布时间】:2017-10-17 07:40:12
【问题描述】:
原问题
我正在尝试使我的 XAML 设计中的某些宽度依赖于其他宽度。为了实现这一点,我发现我需要使用IValueConverter 来实现绑定。几乎可以归结为this question(或者,更详细的帖子,click here)的方法。
我的代码相当简单,但它不断产生以下错误:error C2039: 'GridViewWidthConverter': is not a member of 'MyNamespace'。为什么?
现在,我的 XAML 代码的相关部分如下所示:
<Page
...
xmlns:local="using:MyNamespace"
...>
<!-- Horizontal scrolling grid -->
<GridView>
<GridView.Resources>
<local:GridViewWidthConverter x:Key="GridViewWidthConverter" />
</GridView.Resources>
...
</GridView>
...
</Page>
GridViewWidthConverter.h:
#pragma once
#include "pch.h"
using namespace Platform;
using namespace Windows::UI::Xaml::Data;
using namespace Windows::UI::Xaml::Interop;
namespace MyNamespace
{
public ref class GridViewWidthConverter sealed : IValueConverter
{
public:
GridViewWidthConverter();
virtual ~GridViewWidthConverter();
virtual Object^ Convert(Object^ value, TypeName targetType, Object^ parameter, String^ language);
virtual Object^ ConvertBack(Object^ value, TypeName targetType, Object^ parameter, String^ language);
};
}
GridViewWidthConverter.cpp:
#include "pch.h"
#include "GridViewWidthConverter.h"
using namespace MyNamespace;
// Constructor
GridViewWidthConverter::GridViewWidthConverter(){}
// Destructor
GridViewWidthConverter::~GridViewWidthConverter(){}
Object ^ GridViewWidthConverter::Convert(Object ^ value, TypeName targetType, Object ^ parameter, String ^ language)
{
return value;
}
Object ^ GridViewWidthConverter::ConvertBack(Object ^ value, TypeName targetType, Object ^ parameter, String ^ language)
{
return value;
}
编辑
完整的错误说明如下:
Error C2039: 'GridViewWidthConverter': is not a member of 'MyNamespace' in \generated files\xamltypeinfo.g.cpp, line 200
Error C2065: 'GridViewWidthConverter': undeclared identifier in \generated files\xamltypeinfo.g.cpp, line 200
Error C2440: 'initializing': cannot convert from 'overloaded-function' to 'Platform::Object ^(__cdecl *)(void)' in \generated files\xamltypeinfo.g.cpp, line 252
非常感谢!
【问题讨论】:
-
这个问题可能与您的包含文件的顺序有关。在使用类型转换器的
Page实现的 .xaml.h 文件中,确保在生成的任何 .gh 之前包含类型转换器头文件文件。
标签: xaml visual-c++ namespaces uwp c++-cx