资源未找到但已找到

时间:2014-10-04 22:58:20

标签: wpf resourcedictionary

我使用以下部分代码将文本块添加到DataGridTemplateColumn:

FrameworkElementFactory tb = new FrameworkElementFactory(typeof(TextBlock));
tb.SetValue(TextBlock.IsHitTestVisibleProperty, false);
tb.SetBinding(TextBlock.DataContextProperty, new Binding("doorparameters[" + pid.ToString() + "]"));
tb.SetResourceReference(TextBlock.StyleProperty, "ParameterTextBlockStyle");

一切正常但是当我在调试模式下运行时,输出窗口显示以下错误:

  

System.Windows.ResourceDictionary警告:9:找不到资源;的ResourceKey =' ParameterTextBlockStyle'

" ParameterTextBlockStyle"是在datagrid的资源中定义的,而不是Window资源。奇怪的是,风格定义的资源并不重要,我总是得到这个消息。

可以忽略此错误吗?

2 个答案:

答案 0 :(得分:0)

试试这个,

FrameworkElementFactory tb = new FrameworkElementFactory(typeof(TextBlock));
tb.SetValue(TextBlock.IsHitTestVisibleProperty, false);
tb.SetBinding(TextBlock.DataContextProperty, new Binding("doorparameters[" + pid.ToString() + "]"));
tb.SetResourceReference(TextBlock.StyleProperty, (Style)dataGrid.FindResource("ParameterTextBlockStyle"));

答案 1 :(得分:0)

SetResourceReference相当于DynamicResource,而DataGridTemplateColumn使用了一些黑客来呈现自己。 (对不起,此时我只是不记得它究竟是什么)。

你可以尝试相当于StaticResource,这应该更可靠,因为它不必通过走逻辑树来找到样式:

tb.SetValue(FrameworkElement.StylePropertyProperty,
            dataGrid.FindResource("ParameterTextBlockStyle"));