设计时故障:WPF,用户控件和命名空间

时间:2010-05-08 16:19:15

标签: wpf user-controls namespaces

我有一个非常简单的WPF项目,包含一个Window和Usercontrol。我非常处于学习阶段。它运行时它工作正常。但是,我无法在设计时看到表格。问题,我认为与名称空间有关,但我不明白在哪里。这可能是一个简单的错误

主窗口XML

<Window 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:views="clr-namespace:UserLogin"
    x:Class="UserLogin.MainView"
    x:Name="MainViewWindow"
    mc:Ignorable="d" 
    Title="Login" 
    Height="141" 
    Width="347"
    >

    <Grid>        
        <views:LoginView />
    </Grid>

</Window>

主窗口CodeBehind

Imports Microsoft.VisualBasic
Imports System
Imports System.Windows
Imports UserLogin

Namespace UserLogin

    Partial Public Class MainView
        Inherits System.Windows.Window

        Public Sub New()
            InitializeComponent()
        End Sub

    End Class

End Namespace

Usercontrol XAML

<UserControl 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" 
             x:Class="UserLogin.LoginView"
             x:Name="LoginViewControl"
             mc:Ignorable="d" d:DesignHeight="96" d:DesignWidth="298">
    <Grid  Height="96" Width="298">
        <Button Command="{Binding OKCommand}" Height="21" Margin="0,0,90,16" Name="btnOK" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="76">OK</Button>
        <Button Command="{Binding CancelCommand}" Height="21" HorizontalAlignment="Right" Margin="0,0,9,16" Name="btnCancel" VerticalAlignment="Bottom" Width="75">Cancel</Button>
        <Label Height="23" HorizontalAlignment="Left" Margin="10,5,0,0" Name="Label1" VerticalAlignment="Top" Width="85">Name:</Label>
        <Label HorizontalAlignment="Left" Margin="10,32,0,0" Name="Label2" Width="85" Height="29" VerticalAlignment="Top">Password:</Label>
        <TextBox Margin="0,31,6,0" Name="txtPassword" Height="22" VerticalAlignment="Top" HorizontalAlignment="Right" Width="182" />
        <ComboBox Height="22" Margin="110,6,6,0" Name="cboNames" VerticalAlignment="Top" />
    </Grid>
</UserControl>

Usercontrol CodeBehind

Imports Microsoft.VisualBasic
Imports System
Imports UserLogin

Namespace UserLogin
    Partial Public Class LoginView
        Inherits System.Windows.Controls.UserControl

        Public Sub New()
            InitializeComponent()
        End Sub

    End Class
End Namespace

我想我错过了这个命名空间

xmlns:views="clr-namespace:UserLogin"

因为intellisense没有给我在XAML设计器中声明的usercontrol,而是报告错误“无法加载程序集的元数据等等”

任何建议的答案

西蒙

3 个答案:

答案 0 :(得分:1)

我遇到了这个问题并弄明白了。我在设计器中遇到了错误,但在运行程序时却有效。在这种情况下,源代码位于网络驱动器上,并且该驱动器没有完全信任权限。我在本地移动了代码并开始工作。如果您希望将代码保留在网络驱动器上,也可以添加完全信任权限。

答案 1 :(得分:0)

这可能是一个愚蠢的问题,但您是否在创建控件后重建了项目? Visual Studio WPF编辑器在查找程序集方面非常挑剔,但“无法找到元数据”几乎总是意味着您所引用的程序集不存在。
每当你有一个奇怪的WPF设计器问题时,总是重建并可能重新启动VS。

答案 2 :(得分:0)

是同一程序集中的MainView和LoginView控件吗?如果没有,则需要在名称空间defn中包含程序集信息。