如何从XamlReader.Parse(xmlFragment)调用引用现有资源

问题描述 投票:0回答:1

我有一种情况,我正在使用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片段不能引用页面中的现有资源?

c# wpf xaml datatemplate xamlparseexception
1个回答
0
投票

最初创建XAML片段时,我认为它不会知道您将要放置它的父容器,包括父级中定义的静态资源。尝试使用DataTemplate.Resources引用DataTemplate中的boolToVisibilityConverter。

© www.soinside.com 2019 - 2024. All rights reserved.