在后面的代码中将 contentcontrols 模板设置为 xaml 时,我无法访问父 xaml 中包含的静态资源。
我有一个内容控制如下:
<ContentControl x:Name="ccMaterial">
<ContentControl.Resources>
<x:Array x:Key="BondListKey" Type="sys:Int32"
xmlns:sys="clr-namespace:System;assembly=mscorlib" />
</ContentControl.Resources>
</ContentControl>
然后在代码隐藏中我将模板设置如下:
string template = "<ControlTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>" +
"<ComboBox Grid.Column=\"1\" Grid.Row=\"0\" ItemsSource=\"{Binding Source={StaticResource BondListKey}}\" />" +
"</ControlTemplate>";
ccMaterial.Template = (ControlTemplate)XamlReader.Parse(template);
问题是当我尝试运行它时,我得到一个异常,说找不到资源“BondListKey”。谁能解释为什么?
如果您需要更多信息,请告诉我。
回应约翰斯的评论:
我有一个选项卡项,我希望能够根据用户在表单上其他位置的选择在该选项卡中显示不同的控件。例如,如果用户选择了汽车,我希望能够更改控制模板以包含用于发动机尺寸、燃料类型等的文本框,如果用户选择橙色,我希望能够更改控制模板以包含多样性和甜美。我怀疑我可以通过在选项卡上绘制所有可能的控件来获得此功能,然后根据数据触发器更改相关控件的可见/启用状态,但这可能涉及大量过滤控件(因为可能有很多用户选择类型)。理想情况下,我希望能够将所需的控件模板作为字符串提供,解析并分配给控件的模板,从而在运行时修改其内容。
请让我知道这是否没有意义或者您需要任何澄清:)