WPF中的奇怪警告

时间:2015-02-05 21:02:29

标签: c# wpf

我有一个自定义用户控件,我们称之为MyUserControl。我无法粘贴它,因为它包含1个tabcontrol + 2个datagrids。 我的UC加载了一个包含我所有样式的resourceDictionnary。

我的窗口中有一个名为grid_1的网格。

当我点击按钮时,我就这样做了:

grid1.Children.Clear();
grid1.Children.Add(new MyUserControl());

它工作正常,我没有任何错误或警告。但是当我再次点击我的按钮时,我在输出中有10次这个警告:

System.Windows.ResourceDictionary Warning: 9 : Resource not found; ResourceKey='System.Windows.ResourceReferenceExpression'; ResourceKey.HashCode='43311876'; ResourceKey.Type='System.Windows.ResourceReferenceExpression'

有没有办法找到更详细的跟踪来找到问题的来源? 我的控件第二次加载时,我怎么可能只有错误?

您可以想象在我的所有代码中都没有引用System.Windows.ResourceReferenceExpression

你有任何想法解决这个问题或者至少帮我找到消息来源吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

这个问题很老,但是我只能找到模糊的答案,表明“ StaticResource”和“ DynamicResource”的混合使用会导致这些警告。

在我的情况下,当我从DataGrid删除条目时出现警告。这些条目已绑定到ObservableCollection。

此问题是由包含颜色和画笔的ResourceDictionary(XAML)引起的。笔刷将颜色用作动态资源,例如

SolidColorBrush x:Key =“ TableBorderBrush” Color =“ { DynamicResource TableBorderColor}”

在包含DataGrid的XAML文件中,这些笔刷之一用作元素作为StaticResource。因此,使用了使用DynamicResource的StaticResource。将 StaticResource 用于画笔后,警告消失了。