Я использую библиотеку http://wpfmdi.codeplex.com/ для обработки MDI в моем приложении WPF.Невозможно установить положение окна
У меня есть холст, который содержит дочерний контейнер, который должен содержать несколько маленьких окон. Я хочу, чтобы окна открывались в позиции x = 500, y = 500. Мне удалось добиться этого с помощью моего текущего кода, как ни странно, когда открыто первое окно, оно не отображается - т. Е. Холст остается пустым. Затем, как только я добавлю другое окно, оба окна появятся в правильном месте.
Ниже я вставил свой XAML и код, который открывает новое окно на холсте.
<Window x:Name="VisualQueryBuilderWindow" x:Class="QueryBuilder.VisualQueryBuilder"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"
Title="Visual Query Builder" WindowState="Maximized" Closing="VisualQueryBuilderWindow_Closing">
<Window.Resources>
<Style TargetType="TreeView">
<Setter Property="Padding" Value="0,0,20,0"/>
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0,0,5,0"/>
</Style>
</Window.Resources>
<Grid>
<DockPanel LastChildFill="True">
<TreeView DockPanel.Dock="Left"
Name="tvSchema"
AllowDrop="True"
TreeViewItem.PreviewMouseLeftButtonDown="TreeViewItem_PreviewMouseLeftButtonDown">
</TreeView>
<TabControl>
<TabItem Name="tabQueryBuilder" Header="Query Builder">
<Canvas Name="cnvsMain" Background="LightGray" AllowDrop="True" Drop="cnvsMain_Drop">
<mdi:MdiContainer Name="mainContainer" Background="LightGray">
</mdi:MdiContainer>
</Canvas>
</TabItem>
<TabItem Name="tabResults" Header="Results"></TabItem>
</TabControl>
</DockPanel>
</Grid>
TableWindow tableWindow = new TableWindow(tableName);
MdiChild child = new MdiChild()
{
MaximizeBox = false,
MinimizeBox = false,
Resizable = true,
ShowIcon = false,
Title = tableName,
Content = tableWindow.Content as UIElement //Opens new instance of my window class
};
mainContainer.Children.Add(child);
child.Position = new Point(500, 500);
Пожалуйста, обратите внимание, что я также попытался установить позицию внутри блока конкретизации MDIChild и он не работал там.
UPDATE: Я думаю, что это также стоит отметить, что мой MdiContainer помещается внутри вкладки, и я заметил, что если я изменю вкладку и переключиться обратно на один с контейнером, витринами. Таким образом, может ли это быть какой-то освежающей проблемой?
Просто подумал, а как насчет вызова 'mainContainer.InvalidateArrange()' после установки позиции? – mlorbetske
@mlorbetske Не повезло :( –
@mlorbetske Добавлено обновление на вопрос –