Ich habe eine sehr einfache Benutzerkontrolle, und ich versuche, es in XAML zu instanziieren. Ich finde, wenn ich mit dem Namespace ein wenig übereifrig vorgehe, stoße ich auf Probleme mit x: Name.Überspezifizierter Namespace in UserControl schlägt fehl WPF Build
Hier ist mein Usercontrol:
<UserControl x:Class="UserControlTest.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300">
<Grid>
<Label Name="Label1">Label</Label>
</Grid>
</UserControl>
Hier ist der Code-behind für die Usercontrol:
Namespace UserControlTest
Partial Public Class UserControl1
End Class
End Namespace
Nun beachten Sie, dass ich den Stammnamespace meiner VB.Net Projekt auf "UserControlTest". Zu wissen, dass, haben Sie einen Blick auf meine Hauptfenster: Hier ist mein Hauptfenster:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:control="clr-namespace:UserControlTest.UserControlTest"
Title="Window1" Height="300" Width="300">
<Grid>
<control:UserControl1 />
</Grid>
</Window>
Sehen Sie, wie die Steuer alias haben „UserControlTest.UserControlTest“ braucht? Das ist, weil ich den Stammnamespace meines Projekts auf UserControlTest haben, und ich habe den Namensraum des Usercontrol definiert UserControlTest, auch zu sein. Wenn ich keinen Namespace für das UserControl verwende, habe ich keine Probleme.
jedoch, weil ich dies getan haben, schlägt der Build sollte ich versuchen, eine x anwenden: Namen dem Usercontrol, wie folgt:
<control:UserControl1 x:Name="test"/>
, dass der Build fehlschlagen wird, mit diesem Fehler:
Type 'UserControlTest.UserControlTest.UserControl1' is not defined.
Kann jemand erklären warum? Muss ich vermeiden, meine Benutzersteuerelemente in Namespaces zu setzen, nur damit ich ihnen x geben kann: Name Werte? Ich möchte meine UserControls von Code-behind manipulieren, und ohne einen x: Name, bin ich den Bach hinauf. Aber ich möchte die Namespace-Nutzung nicht opfern, nur um sie zu bekommen!
Vielen Dank.
Meine Benutzerkontrolle hat keinen Namespace im Code-Behind definiert. Sind Sie sich sicher über die Benennung von Foo.Controls? Ich habe einen Controls-Ordner und ein neues UserControl darin hinzugefügt. Im Codebehind ist kein Namespace definiert. Mein Hauptfenster XAML hat xmlns: control = "clr-namespace: UserControlTest" (d. H. NICHT clr-namespace: UserControlTest.Control) und kann das neue UserControl in XAML mit dem Präfix control: erstellen. – TimH
Bitte sehen Sie meine Bearbeitung. Hoffentlich macht es Sinn. – David