将用户控件添加到wpf窗口

Wed*_*dTM 62 wpf user-controls

我有一个我创建的用户控件,但是当我在窗口中将它添加到XAML时,Intellisense没有把它拿起来,我无法弄清楚如何将它添加到窗口中.

Mar*_*ris 73

您需要在窗口标记内添加引用.就像是:

xmlns:controls="clr-namespace:YourCustomNamespace.Controls;assembly=YourAssemblyName"
Run Code Online (Sandbox Code Playgroud)

(当你添加xmlns:controls ="intellisense应该启动以使这一点更容易)

然后你可以添加控件:

<controls:CustomControlClassName ..... />
Run Code Online (Sandbox Code Playgroud)

  • 它现在是2015年,设计师仍然不会自动执行此操作?**WTF!?!** (7认同)
  • @MartinHarris 我应该在“yourassemblyname”中写什么? (2认同)
  • VS2013 设计师对省略装配感到更满意 (2认同)

use*_*116 15

您可能需要添加命名空间:

<Window x:Class="UserControlTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:UserControlTest"
    Title="User Control Test" Height="300" Width="300">
    <local:UserControl1 />
</Window>
Run Code Online (Sandbox Code Playgroud)


Mua*_*Dib 12

几个提示:首先,确保顶部有一个包含控件所在命名空间的xmlns.

xmlns:myControls="clr-namespace:YourCustomNamespace.Controls;assembly=YourAssemblyName"
Run Code Online (Sandbox Code Playgroud)

第二,有时intellisense是愚蠢的.

  • +"有时智能感知是愚蠢的".确保项目实际上没有编译和运行,我已经忘记了VS告诉我我的xmal无效的次数,当它需要的只是重建以使其重新考虑时. (7认同)

Maž*_*ius 6

这就是我让它工作的方式:

用户控制 WPF

<UserControl x:Class="App.ProcessView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>

    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

用户控制 C#

namespace App {
    /// <summary>
    /// Interaction logic for ProcessView.xaml
    /// </summary>
    public partial class ProcessView : UserControl // My custom User Control
    {
        public ProcessView()
        {
            InitializeComponent();
        }
    } }
Run Code Online (Sandbox Code Playgroud)

主窗口 WPF

<Window x:Name="RootWindow" x:Class="App.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:app="clr-namespace:App"
        Title="Some Title" Height="350" Width="525" Closing="Window_Closing_1" Icon="bouncer.ico">
    <Window.Resources>
        <app:DateConverter x:Key="dateConverter"/>
    </Window.Resources>
    <Grid>
        <ListView x:Name="listView" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <app:ProcessView />
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)