WPF: добавление пользовательского контроля в окно - PullRequest
2 голосов
/ 21 апреля 2009

Прежде всего, я новичок в WPF и C #, поэтому, возможно, проблему, которую я имею, действительно легко решить. Но я застрял на данный момент.

Позвольте мне объяснить мою проблему.

У меня есть окно WPF и два пользовательских элемента управления (Controls и ContentDisplayer).

Пользовательский элемент управления Controls, содержащий несколько кнопок, добавлен в XAML окна. Здесь ничего особенного.

Window.XAML

<nv:Controls/>

Теперь, что я хочу сделать, это когда пользователь нажимает кнопку в элементах управления, необходимо добавить ContentDisplayer в Scatterview, который есть в моем окне.

Я решил проблему, добавив кнопки в окно, а не используя элементы управления пользователя. Но это не то, что я хочу.

Window.XAML.CS

private static void Button_ContactChanged(object sender, ContactEventArgs e)
    {
      object ob = Application.LoadComponent(new Uri(
      "NVApril;component\\XAML\\ContentDisplayer.xaml",
      System.UriKind.RelativeOrAbsolute));

    //Set a unique name to the UserControl
      string name = String.Format("userControl{0}",
      SurfaceWindow1_Scatterview.Items.Count);
      UserControl userControl = ob as UserControl;
      userControl.Name = name;

    //Add the new control to the Scatterview
      SurfaceWindow1_Scatterview.Items.Add(userControl);
      SurfaceWindow1_Scatterview.RegisterName(name, userControl);
    }

Таким образом, настоящий вопрос заключается в следующем: как добавить пользовательский элемент управления в окно, нажав кнопку в другом пользовательском элементе управления?

Спасибо

Toner

Ответы [ 5 ]

3 голосов
/ 06 мая 2012

В верхней части окна xaml добавить

xmlns:d="clr-namespace:SomeNamespace.Usercontrols"

там, где они уже существуют, вы можете выбрать пространство имен вашего элемента управления из списка интеллекта.

Тогда где вы хотите разместить тип управления:

<d:yourusercontrolhere params />

и ваш пользовательский контроль может быть добавлен туда.

2 голосов
/ 28 апреля 2011

Google оценивает этот вопрос высоко, но нет принятого ответа.

Попробуйте ответить на этот похожий вопрос .

0 голосов
/ 25 апреля 2013

Понятия не имею, что вы пытаетесь сделать своим примером,

Итак, у вас есть элемент управления, определенный следующим образом:

public partial class somecontrolname : UserControl

С соответствующим файлом Xaml

Все, что вам нужно сделать, чтобы добавить его в коде к вашему окну, - это сначала вам нужен LayoutRoot, такой как элемент управления Grid в окне, а затем просто

[mylayoutcontrol] .Children.Add (новое somecontrolname ());

Возможно, я неправильно понял, что вы пытаетесь сделать, ваш пример кода не имеет особого смысла для меня, похоже, вы пытаетесь загрузить исходный файл xaml

0 голосов
/ 21 апреля 2009

В вашем окне звучит так, как будто вам нужно добавить событие к экземплярам Controls.

<local:ContentDisplayer>
...
  <nv:Controls AddControl="ContactChanged"/>
...

Затем в обработчике событий ContactChanged вы можете создать новый элемент управления Controls и добавить его в любую коллекцию, которую используете, как в вышеописанном обработчике событий Button_ContactChanged.

Дайте мне знать, если вам нужны дальнейшие разъяснения.

0 голосов
/ 21 апреля 2009

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

public event EventHandler AddControl;

private void RaiseAddControl()
{
    if (AddControl!= null)
    {
        AddControl(this, EventArgs.Empty);
    }
}

Теперь потопите это событие в вашем Окне

yourControl.AddControl += ContactChanged
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...