it-swarm.com.de

Der Typ 'UserControl' unterstützt keine direkten Inhalte

Ich habe ein Outlook 2013- und 2016-VSTO-Add-In-Projekt und versuche, einem benutzerdefinierten Aufgabenbereich ein WPF-Benutzersteuerelement hinzuzufügen, wie hier hier beschrieben.

Das Problem, das ich habe, ist, dass ich beim Hinzufügen des User Control (WPF) ein WPF-Control mit einem Raster generiert, es wird jedoch automatisch der Fehler "Der Typ 'UserControl' unterstützt keine direkten Inhalte" ausgegeben.

WPF generiert:

<UserControl x:Class="TestNamespace.UserControl1"
         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" 
         xmlns:local="clr-namespace:TestNamespace"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>

</Grid>
</UserControl>

Ich weiß, dass ich in der Vergangenheit die WPF-Projekttyp-GUID zur .proj-Datei hinzufügen musste, um einige Dinge zum Laufen zu bringen, aber das Hinzufügen machte keinen Unterschied (tatsächlich würde es in einer bestimmten Reihenfolge nicht geladen).

Original:

<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Stürzt ab:

<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Stürzt nicht ab, behebt den Fehler jedoch nicht:

<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Kann mir jemand die richtige Richtung zeigen?

UPDATE

Ich habe versucht, ein neues Klassenbibliothekprojekt direkt zu erstellen, ein WPF-Benutzersteuerelement hinzugefügt und dann den Verweis auf System.Xaml hinzugefügt, und ich habe das gleiche Problem.

50
NAJ

Versuchen Sie für jeden, der dieses Problem in Visual Studio 2015 hat, dem Projekt einen System.Xaml-Verweis hinzuzufügen (falls noch nicht geschehen). Visual Studio zeigt einfach keinen Referenzfehler an.

154
alicanerdogan

Fügen Sie nach dieser klaren LösungSystem.XamlundUIAutomationProviderreferenzen zu Ihrem Projekt hinzu und erstellen Sie dann erneut

95
paulgai

Fügen Sie Verweise System.Xaml und UIAutomationProvider hinzu, und lösen Sie die Probleme mit Neustart von Visual Studio.

17
SLdragon

In VS2017 (15.3.5) tritt dieses Problem auf, wenn sich das Basis-UserControl/Window des UserControl, das Sie bearbeiten, in derselben Bibliothek/Exe befindet. Nach dem Start von VS ist es für einige Minuten in Ordnung, dann kommt etwas in den Hintergrund und die gesamte XAML-Datei ist blau-kreischend. Kompilieren und es geht weg, fang an zu tippen und es ist sofort wieder da. Intellisense funktioniert weiterhin, macht den XAML-Editor jedoch fast unbrauchbar.

Die einzige Möglichkeit, dies zu beheben, besteht darin, Basisklassen in eine andere Bibliothek zu verschieben.

3
avenmore

Entfernen Sie einfach System.Xaml und fügen Sie ihn dann erneut hinzu.

3
Ahmed Alayat

Versuchen Sie, die neue Content-Eigenschaft wie im Beispiel verfügbar zu machen, und verwenden Sie ContentPropertyAttribute für die Klasse. Für mich hat das geholfen. Ich hatte das Problem in VS 2017.

[ContentProperty( "Content" )]
public class MyUserControl: UserControl
{
    public new Object Content
    {
        get => base.Content;
        set => base.Content = value;
    }
    ...
}
1
Monika Mateeva

Während fehlende Referenzen als Lösung erwähnt wurden, stellte ich fest, dass es auch möglich sein kann, Klassenmehrdeutigkeiten in Ihren Referenzen aufzulösen.

Für mich wurde das Problem durch eine externe Bibliothek verursacht, die im System.Windows.Markup-Namespace eine eigene ContentPropertyAttribute definiert hatte, die dazu führte, dass Inhaltsattribute vollständig fehlschlugen. Durch Entfernen des Verweises wird das Problem behoben. Wenn dies jedoch keine Option ist, müssen Sie stattdessen einen Namespace-Alias ​​ in den Eigenschaften des Verweises einrichten.

0
Jason Lim

Neben dem Hinzufügen bereits erwähnter Referenzen musste ich die Lösung schließen und wieder öffnen. Wenn dies nicht gelingt, starten Sie Visual Studio neu.

0
Julio Nobre

Es scheint also, als wären die Codierungs-Feen über Nacht gewesen, da dies jetzt perfekt zu funktionieren scheint, ohne dass ich irgendetwas geändert habe, sehr seltsam, aber zumindest kann ich jetzt weitermachen!

0
NAJ