如何将Window.Resources中定义的DataTemplates应用于浮动时的所有Infragistics窗格?

时间:2013-04-25 14:14:51

标签: resources infragistics docking datatemplate

我正在使用Infragistics XamDockManager来处理我的应用程序中的对接和取消停靠面板。我定义了一个Window,它使用DockManager指定几个不同的窗格。我在Window.Resources中定义了几个DataTemplates,以便在绑定到我的一个类时可以正确显示数据。

当所有窗格都停靠在应用程序中时,一切正常;但是,当我取消停靠窗格并且它是浮动的时,它不能很好地工作。如果数据已被查看,则仍然可以正常显示,但如果通过添加到列表或选择其他项来更改数据,则不会根据DataTemplate呈现新信息。相反,它显示为好像我没有数据模板;它只显示完整的班级名称。

我发现在窗格取消停靠时要应用DataTemplates的唯一方法是在每个窗格的参考资料部分指定数据模板,或者在App.Xaml Resources部分指定它们以便它适用整个应用程序。不幸的是,我不希望在整个应用程序中应用相同的模板,因此后一种选择并不真正起作用。我已将DataTemplates放入他们自己的ResourceDictionary中,所以我可以从每个窗格中引用它,但是仍然非常讨厌我要用于我想要使用它们的每个地方的资源。我认为将数据模板放在Window.Resources中应该将它们应用于该文件中定义的所有其他XAML。

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

好的,所以我一直在使用Infragistics支持并深入研究他们的文档深度,我找到了我想要的东西。

显然,当窗格浮动路由时,事件不会冒泡到主窗口,主窗口中定义的样式将不会应用于浮动窗格中的元素(这包括数据模板)。

对于样式和数据模板,有两种可能的解决方案:

  1. 正如我在问题中提到的,您可以将样式放在App.xaml中。
  2. 您可以处理ToolWindowLoaded以设置样式或附加浮动窗格的事件处理程序。与ToolWindowLoaded一起使用时,您可以处理ToolWindowUnloaded事件,以便在窗格不再浮动时删除这些事件处理程序和样式。