mahdiiiiyeh Ответов: 0

Удалите пользовательский элемент управления в mdicontainer.


Здравствуйте друзья
Я использовал mdi в главном окне. У меня есть несколько пользовательских элементов управления (которые включают в себя несколько кнопок).
Пользовательские элементы управления открываются в mdi.
Теперь я хочу закрыть пользовательский элемент управления, нажав на кнопку.
<Window x:Class="Application2.MainWindow"

xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MainWindow" Width="1300" Height="700" Loaded="Window_Loaded" >
<Grid >
<DockPanel Height="19" VerticalAlignment="Top">
<Menu Margin="0,0,0,-10" >
<MenuItem Header="File">
<MenuItem Header="New" Name="neww" Click="neww_Click" >
</MenuItem>
 </Menu>  	
</DockPanel>
<Grid Margin="0,63,0,0">
<mdi:MdiContainer Name="container1" Margin="0,8,0,0">
</mdi:MdiContainer> 
 </Grid>
</Grid>
</Window>

код за главным окном:
private void neww_Click(object sender, RoutedEventArgs e)
      {

       container1.Children.Add(new MdiChild()
          {
              Title = "",
            Height=247,
            Width=444,

              Content = new UListNew()// it is user control
          });
      }

Внутри пользовательского элемента управления (UListNew) есть кнопка(btnClose) для закрытия.
код за UListNew:
private void btnClose_Click(object sender, RoutedEventArgs e)
       {
           MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
           parentWindow.container1.Children.RemoveAt( index);
       }

теперь, если у меня есть несколько открытых пользовательских элементов управления ,
Как получить пользовательский элемент управления index для close?
пожалуйста, помогите мне.

Что я уже пробовал:

private void btnClose_Click(object sender, RoutedEventArgs e)
       {
           MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
           parentWindow.container1.Children.RemoveAt( index????);
       }

phil.o

Возможно, мы понятия не имеем, где находится WPF.Сборка MDI происходит от того, как и как использовать ее функциональные возможности. Это не является частью стандартной структуры. Поэтому вам может быть трудно найти подходящий и полезный ответ.

Dave Kreskowiak

Стандартный WPF не имеет контейнера MDI. Это контроль третьей стороны, о котором вы говорите. Откуда вы его взяли и почему не просите поддержки у этих людей?

mahdiiiiyeh

Многие приложения выполняются с помощью контейнера MDI.Использование WPF.mdi.dll.
Я хочу получить текущий пользовательский контроль индекса.
parentWindow.контейнер1.Детей.RemoveAt( индекс????);
или
как получить текущий дочерний экземпляр mdi?
parentWindow.контейнер1.Детей.Удалить( ?????);
пожалуйста, направь меня

Dave Kreskowiak

Во-первых, МДИ-это мертвая концепция. Опять же, WPF не имеет встроенной поддержки MDI. Это сторонний элемент управления, который вы используете. Откуда она у тебя?

0 Ответов