Откройте новый UserControl в главном Windows - PullRequest
1 голос
/ 09 марта 2010

открытый частичный класс Window1: Window { public Window1 () { InitializeComponent (); }

    private void ToggleButton_Checked(object sender, RoutedEventArgs e)
    {
        switch ((sender as Button).Content.ToString())
        {
            case "UserControl 1":
                AddItemToContainer(new UserControl1());
                break;
            case "UserControl 2":
                AddItemToContainer(new UserControl2());
                break;
            case "UserControl 3":
                AddItemToContainer(new UserControl3());
                 break;
            default:
                break;
        }
    }

    void AddItemToContainer(UIElement _myElement)
    {
            Grid.SetColumn(_myElement, 1);
            HostContainer.Children.Add(_myElement);
    }
}
}
}

С этим я могу открыть новый пользовательский элемент управления в моем окне

Допустим, что-то вроде добавления дочернего элемента в myMainWinodw. Теперь я пытаюсь нажать на кнопку из моего userControl, поэтому я открываю другой userControl, который заменяет первый

Я объясняю:

У меня есть основные Windows, в которых есть 3 кнопки: первая, чтобы открыть первый UserControl, вторая, чтобы открыть второй userControl, и третья, чтобы открыть последний UserControl, представьте, что я открыл первый UserControl, назовем его UC1,

В UC1 у меня есть кнопка, чтобы открыть второй пользовательский элемент управления (назовем его UC2). Мне нравится, что, когда я нажимаю кнопку с UC1, UC2 открывается и занимает место UC1 (конечно, UC2 все еще дитя моего главного вина) Я уже попытался вызвать метод AddItemToContainer из другого метода, но ничего не произошло

Любое предложение, пожалуйста

Ответы [ 2 ]

0 голосов
/ 09 марта 2010

Да, это помогает, но на самом деле это не заменит UC1. Просто немного подсуньте его и выделите небольшое пространство в главном окне. Вот несколько снимков с объяснением, если вам нравится http://startou.com/file/630-9411954b18.html

0 голосов
/ 09 марта 2010

Этот подход может помочь:

Вызовите контейнерный элемент управления и измените его Children. В этом примере предполагается, что контейнерный элемент управления является сеткой.

C # код для Window1

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        HostContainer.Children.Add(new UserControl1(HostContainer));
    }
}

C # код для UserControl1

public partial class UserControl1 : UserControl
{
    Grid _hostContainer; 

    public UserControl1(Grid HostContainer)
    {
        InitializeComponent();
        _hostContainer = HostContainer;
    }

    private void ToggleButton_Checked(object sender, RoutedEventArgs e)
    {
        UserControl2 UC2 = new UserControl2();
        _hostContainer.Children.Add(UC2);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...