簡體   English   中英

WPF:向窗口添加用戶控件

[英]WPF: adding a usercontrol to a window

首先,我是 WPF 和 C# 的新手,所以也許我遇到的問題很容易解決。 但我現在有點卡住了。

讓我解釋一下我的問題。

我有一個 WPF 窗口和兩個用戶控件(控件和 ContentDisplayer)。

包含一些按鈕的用戶控件控件被添加到窗口的 XAML 中。 這里沒什么特別的。

窗口.XAML

<nv:Controls/>

現在,我想要做的是當用戶按下控件中的按鈕時,需要將 ContentDisplayer 添加到我的窗口中的 Scatterview 中。

我通過將按鈕添加到窗口解決了這個問題,而不是使用用戶控件控件。 但這不是我想要的。

窗口.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);
    }

所以真正的問題是:如何通過按下其他用戶控件中的按鈕將用戶控件添加到窗口?

謝謝,

碳粉

在窗口頂部 xaml 添加

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

如果這些已經存在,您可以從智能列表中選擇控件的命名空間。

然后你想放置控件類型的位置:

<d:yourusercontrolhere params />

並且您的用戶控件可以添加到那里。

我不知道你想做什么你的例子,

所以你有一個這樣定義的控件:

public partial class somecontrolname : UserControl

使用相應的 Xaml 文件

要將它以代碼形式添加到窗口中,您需要做的就是首先在窗口中需要一個 LayoutRoot,例如 Grid 控件,然后只需

[mylayoutcontrol].Children.Add(new somecontrolname());

也許我弄錯了您要做什么,您的示例代碼對我來說沒有多大意義,看起來您正在嘗試加載 xaml 源文件

在控件中公開一個事件,當您想要添加新控件時會觸發該事件。

public event EventHandler AddControl;

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

現在在您的窗口中接收該事件

yourControl.AddControl += ContactChanged

在您的窗口中,聽起來您需要將事件添加到 Controls 的實例中。

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

然后在您的 ContactChanged 事件處理程序中,您可以實例化一個新的 Controls 控件並將其添加到您正在使用的任何集合中,就像在上面的 Button_ContactChanged 事件處理程序中一樣。

如果您需要進一步說明,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM