Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将ContentTemplateSelector与ContentControl一起正确使用?_C#_Wpf_Xaml - Fatal编程技术网

C# 如何将ContentTemplateSelector与ContentControl一起正确使用?

C# 如何将ContentTemplateSelector与ContentControl一起正确使用?,c#,wpf,xaml,C#,Wpf,Xaml,我有很多ContentControl对象,我需要在其中一些对象(而不是所有对象)周围设置边框。我能够使用以下代码使其工作: 我想将整个ContentTemplate部分移动到另一个资源文件并合并它们。我添加了一个新的资源文件,并将下面的代码部分移到其中 当我尝试将实际的ContentControl代码更改为此时,我得到一个错误,即 “无法创建System.Windows.Controls.ControlTemplate类型的对象 应用于需要该类型的属性 System.Windows.Co

我有很多ContentControl对象,我需要在其中一些对象(而不是所有对象)周围设置边框。我能够使用以下代码使其工作:


我想将整个ContentTemplate部分移动到另一个资源文件并合并它们。我添加了一个新的资源文件,并将下面的代码部分移到其中


当我尝试将实际的ContentControl代码更改为此时,我得到一个错误,即

“无法创建System.Windows.Controls.ControlTemplate类型的对象 应用于需要该类型的属性 System.Windows.Controls.DataTemplateSelector“


如何解决此错误

无法创建类型为ControlTemplate的对象 应用于需要该类型的属性 DataTemplateSelector

此错误消息非常明确。您正在将
ControlTemplate
分配给
ContentControl.DataTemplateSelector
。类型不匹配。您正在分配

解决方案:
您需要实现自己的:

应用模板选择器:

<ContentControl ContentTemplateSelector="{StaticResource ContentControlDataTemplateSelector}" />


现在,您需要创建适当的资源来描述必须绑定到
ContentControl.Content
属性的数据的单个视觉外观。

您似乎混淆了DataTemplates和ControlTemplates。ContentControl的
ContentTemplate
属性保存一个DataTemplate,而ControlTemplate被分配给它的
Template
属性。此外,正如错误消息明确指出的那样,
ContentTemplateSelector
属性需要DataTemplateSelector。这是另一件事,即你必须编写的C#类。在这一点上,看看所有这些东西的在线文档似乎是个好主意:。好的,我明白了。但是我不能在DataTemplate中定义border元素。例如,对100个ContentControl元素中的20个应用边框的最佳方法是什么?这确实是我的问题的一个线索。问题+答案完全不同。“templateselector类型的对象不能应用于需要system.windows.datatemplate的属性”
<ContentControl ContentTemplateSelector="{StaticResource ContentControlDataTemplateSelector}" />