前几天我在XAML中搜索DataProviders,我发现了这篇文章Bind to methods with ObjectDataProvider,它解释了ObjectDataProvider。所以我想试一试。因此,当我复制粘贴xaml和代码隐藏文件时,由于我的xaml文件中的命名空间不匹配,我得到了无效的标记错误。我通过反复试验解决了这个问题,但我没有得到XAML及其名称空间的完整概念,所以我想更详细地了解。
答案 0 :(得分:1)
XAML依赖于.Net Framework的名称空间概念。您可以使用位于另一个命名空间中的组件(在您的示例中,它是ColorHelper)。但你必须告诉XAML编译器(是的XAML可以编译),在哪里找到你想要使用的东西。您通过首先声明一个xml命名空间来执行此操作:
xmlns:local="clr-namespace:SimpleObjectDataProvider"
然后在另一行
<ObjectDataProvider x:Key="colors"
ObjectType="{x:Type local:ColorHelper}"
MethodName="GetColorNames"/>
您可以使用此命名空间中定义的所有类/ WPF控件。 您发布的链接上的示例可能有点令人困惑,因为没有显示定义ColorHelper类的位置(在哪个命名空间中)。