
Afternoon Actipro,
I just noticed this bug when I was looking to replicate another bug outside of our application.
If you add a new ToolWindow where it is set to float when you are using a DataTemplate to display the view based on a ViewModel type it won't pick it up. Although it will work if docked initially. However it does work by using a TemplateSelector like in your MVVM ToolWindow example.
I managed to replicate this using your MVVM ToolWindows example.
I modified the MainView.xaml to not use the TemplateSelector and use DataTemplates, and then in the MainViewModel I just created an instance of a new ToolWindow but set it to float.
<UserControl.Resources>
..
<DataTemplate DataType="{x:Type sample:ToolItem1ViewModel}">
<sample:ToolItem1View />
</DataTemplate>
<DataTemplate DataType="{x:Type sample:ToolItem2ViewModel}">
<sample:ToolItem2View />
</DataTemplate>
<DataTemplate DataType="{x:Type sample:ToolItem3ViewModel}">
<sample:ToolItem3View />
</DataTemplate>
<!--<sample:ToolItemTemplateSelector x:Key="ToolItemTemplateSelector">
<sample:ToolItemTemplateSelector.ToolItem1Template>
<DataTemplate>
<sample:ToolItem1View />
</DataTemplate>
</sample:ToolItemTemplateSelector.ToolItem1Template>
<sample:ToolItemTemplateSelector.ToolItem2Template>
<DataTemplate>
<sample:ToolItem2View />
</DataTemplate>
</sample:ToolItemTemplateSelector.ToolItem2Template>
<sample:ToolItemTemplateSelector.ToolItem3Template>
<DataTemplate>
<sample:ToolItem3View />
</DataTemplate>
</sample:ToolItemTemplateSelector.ToolItem3Template>
</sample:ToolItemTemplateSelector>-->
</UserControl.Resources>
public MainViewModel() {
...
toolItems.Add(new ToolItem1ViewModel() { IsFloating = true, SerializationId = "floating"});
...
}