如何从 XamlReader.Parse(xmlFragment) 调用中引用现有资源
How to reference existing Resources from a XamlReader.Parse(xmlFragment) call
我有一种情况,我正在使用 XamlReader.Parse(xamlString) 创建自定义数据模板,其中 xamlString 是包含数据模板的片段:
<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。