在一种情况下,我正在使用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片段不能引用页面中的现有资源?
答案 0 :(得分:0)
最初创建XAML片段时,我认为它不知道要放置其的父容器的任何信息,包括在父容器中定义的静态资源。尝试改为使用DataTemplate.Resources引用DataTemplate内部的boolToVisibilityConverter。