0

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

当所有窗格都停靠在应用程序中时,一切正常;但是,当我取消停靠一个窗格并且它处于浮动状态时,它就不能很好地工作了。如果数据已经被查看,那么它仍然可以正确显示,但是如果您通过添加到列表或选择不同的项目来更改数据,则不会根据 DataTemplate 呈现新信息。相反,它显示得好像我没有数据模板一样;它只显示完整的类名。

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

有谁知道解决这个问题的方法?

4

1 回答 1

1

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

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

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

  1. 正如我在问题中提到的,您可以将样式放在 App.xaml 中。
  2. 您可以处理 ToolWindowLoaded 以设置样式或为浮动窗格附加事件处理程序。与 ToolWindowLoaded 结合使用时,您可以处理 ToolWindowUnloaded 事件以在窗格不再浮动时删除这些事件处理程序和样式。
于 2013-04-25T14:49:37.920 回答