我有一个类,部分在XAML中定义,部分在代码中定义:
文件 ElementResource.xaml 如下所示:
<ResourceDictionary x:Class="TestElement.Views.ElementResource"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestElement.Views"
xmlns:vm="clr-namespace:TestElement.ViewModels">
<DataTemplate x:Key="TestTemplate" DataType="{x:Type vm:TestElementViewModel1}">
</DataTemplate>
</ResourceDictionary>
类* ElementResource的其余部分在文件 ElementResource.xaml.cs 中的代码中定义,如下所示:
using System.ComponentModel.Composition;
using System.Windows;
namespace TestElement.Views
{
[Export(typeof(ResourceDictionary))]
public partial class ElementResource : ResourceDictionary
{
}
}
由于某种原因,在“代码隐藏”中无法识别XAML中定义的类部分:
此外,XAML中定义的DataTemplate在初始化后不包含在资源字典中。
我尝试过构建和重建 Ctrl + Shift + s 并仔细检查了部分类here的要求。
我错过了什么?
答案 0 :(得分:3)
好的,我明白了:我从另一个项目中复制并粘贴了xaml文件,并将文件粘贴到当前项目中,将 BuildAction 属性更改为 none 我没有注意到......将它转换为 Page 会让xaml部分知道...
感谢大家的帮助!
答案 1 :(得分:1)
X:类= “TestElement.Views.ElementResource”
这是你的完整集会名称吗?尝试添加所有部分,然后应该被识别。
答案 2 :(得分:1)
在您的XAML中,您是否在ResourceDictionary前面缺少“local:”?
<local:ResourceDictionary x:Class="TestElement.Views.ElementResource"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TestElement.Views"
xmlns:vm="clr-namespace:TestElement.ViewModels">
<DataTemplate x:Key="TestTemplate" DataType="{x:Type vm:TestElementViewModel1}">
</DataTemplate>
</local:ResourceDictionary>