Dies ist mein erster Ausflug in benutzerdefinierte Steuerelemente, und es geht nicht gut. Ich habe ein benutzerdefiniertes Diagrammsteuerelement, das von Canvas abgeleitet ist.wpf benutzerdefinierte Steuerung nicht erkannt
namespace Grapher2 {
public class SeriesManager : Canvas {
public SeriesManager() {
...
}
}
}
Es ist im selben Projekt und Namespace wie meine App definiert. Ich habe versucht, einen Verweis auf das Steuerelement in XAML Hinzufügen wie folgt:
<Window x:Class="Grapher2.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:graph="clr-namespace:Grapher2"
Title="Grapher" Width="800" Height="600">
<StackPanel Name="container" Width="700" Height="500">
<graph:SeriesManager Name="seriesManager" Width="700" Height="500" />
</StackPanel>
Aber wenn ich versuche, die Kontrolle Namen „seriesManager“ in der Code-Behind für das Fenster zu verweisen, erhalte ich „Der Name 'seriesManager' existiert im aktuellen Kontext nicht. "
Darüber hinaus wird der XAML-Editor das Fenster nicht rendern, was eine große Stack-Ablaufverfolgung mit dem Fehler gibt: "Type 'MS.Internal.Permissions.UserInitiatedNavigationPermission' in Assembly 'PresentationFramework, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'ist nicht als serialisierbar markiert. "
Ich stelle mir vor, die Lösung ist etwas dumm für jeden, der benutzerdefinierte Steuerelemente getan hat. Aber ich bin ratlos.
x: Der Name ist für Referenzen innerhalb derselben Baugruppe erforderlich, dies sollte das Problem beheben, dass im Code-Behind nicht auf "seriesManager" verwiesen werden kann. Weitere Informationen: http://stackoverflow.com/questions/1380112/why-cant-i-use-the-name-attribute-on-usercontrol-in-the-same- assembly – Zenuka
Oh und BTW mit dem x: Name statt von Name könnte alle deine Probleme beheben, versuche dies zuerst und lass es uns wissen, wenn es mehr Probleme gibt ... – Zenuka
x: Name hat es behoben! Vielen Dank! – Klay