我有一种情况,我正在使用XamlReader.Parse(xamlString)创建自定义DataTemplate,其中xamlString是包含DataTemplate的片段:
<DataTemplate xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<StackPanel Visibility="{Binding MyBinding, Converter={StaticResource boolToVisibilityConverter}}">
...
</StackPanel>
</DataTemplate>
如您所见,此DataTemplate具有对静态资源的引用(BooleanToVisibilityConverter)。对XamlReader.Parse的调用完成无异常,我将其结果(一个DataTemplate对象)分配给场景层次结构中的对象(在本例中为GridViewColumn.CellTemplate)。但由于某些原因,在调用MainWindow.Show()时,我得到了异常:
System.Windows.Markup.XamlParseException: ''Provide value on 'System.Windows.Markup.StaticResourceHolder' threw an exception.' Line number 'x' and line position 'y'.'
Inner Exception:
Exception: Cannot find resource named 'boolToVisibilityConverter'. Resource names are case sensitive.
为什么加载的XAML片段不能引用页面中的现有资源?
最初创建XAML片段时,我认为它不会知道您将要放置它的父容器,包括父级中定义的静态资源。尝试使用DataTemplate.Resources引用DataTemplate中的boolToVisibilityConverter。