
Hello,
Floating window sometimes shows above on modal dialog.
If there is any solution, please let me know.
Our application has 2 windows.
- MainWindow : includes DockSite
- SubWindow : has button which show toolwindow.
Procedure is the following.
0. Show toolwindow
1. Float the toolwindow.
2. Close toolwindow.
3. Show SubWindow.
4. Press button (Show toolwindow)
--> ToolWindow will be shown above on SubWindow.
MainWindow.xaml
<Window
x:Class="DockingWindowSample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:docking="http://schemas.actiprosoftware.com/winfx/xaml/docking"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="MainWindow"
Width="800"
Height="450"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<Button
x:Name="FloatToolWindowButton"
Margin="8,0,0,0"
Click="FloatToolWindowButton_Click"
Content="(1) Float Right ToolWindow" />
<Button
x:Name="CloseToolWindowButton"
Margin="8,0,0,0"
Click="CloseToolWindowButton_Click"
Content="(2) Close Right ToolWindow" />
<Button
x:Name="ShowDialogButton"
Margin="8,0,0,0"
Click="ShowDialogButton_Click"
Content="(3) Show Dialog" />
</StackPanel>
<docking:DockSite x:Name="MyDockSite" Grid.Row="1">
<docking:SplitContainer>
<!-- Workspace -->
<docking:Workspace>
<docking:TabbedMdiHost>
<docking:ToolWindowContainer>
<docking:ToolWindow
Title="Fixed"
CanAttach="False"
CanDragTab="False"
HasTitleBar="False" />
</docking:ToolWindowContainer>
</docking:TabbedMdiHost>
</docking:Workspace>
<docking:ToolWindowContainer>
<docking:ToolWindow Title="Right" DefaultDockSide="Right" />
</docking:ToolWindowContainer>
</docking:SplitContainer>
</docking:DockSite>
</Grid>
</Window>
MainWindow.xaml.cs
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace DockingWindowSample
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ShowDialogButton_Click(object sender, RoutedEventArgs e)
{
var window = new Window { Title = "Sub Dialog", ResizeMode = ResizeMode.NoResize, Height = 100, Width = 200 };
var button = new Button { Content = "(4) Show ToolWindow", HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center };
button.Click += OnSubDialogButtonClicked;
window.Content = button;
window.ShowDialog();
}
private void OnSubDialogButtonClicked(object sender, RoutedEventArgs e)
{
var target = MyDockSite.ToolWindows.FirstOrDefault(x => x.Title == "Right");
if (target != null)
{
target.Open();
}
}
private void FloatToolWindowButton_Click(object sender, RoutedEventArgs e)
{
var target = MyDockSite.ToolWindows.FirstOrDefault(x => x.Title == "Right");
if (target != null)
{
target.IsFloating = true;
}
}
private void CloseToolWindowButton_Click(object sender, RoutedEventArgs e)
{
var target = MyDockSite.ToolWindows.FirstOrDefault(x => x.Title == "Right");
if (target != null)
{
target.Close();
}
}
}
}
[Modified 2 years ago]