Outlook 2013および2016 VSTOアドインプロジェクトがあり、 here の説明に従って、WPFユーザーコントロールをカスタム作業ウィンドウに追加しようとしています。
私が抱えている問題は、ユーザーコントロール(WPF)を追加すると、グリッドを持つWPFコントロールが生成されますが、「タイプ 'UserControl'は直接コンテンツをサポートしていません」というエラーを自動的にスローすることです。
生成されたWPF:
<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>
過去には、WPFプロジェクトタイプguidを.projファイルに追加して動作させる必要がありましたが、これを追加しても違いはありませんでした(実際には、特定の順序では読み込まれません)。
元の:
<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
クラッシュ:
<ProjectTypeGuids>{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
クラッシュしませんが、エラーを修正しません:
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
誰かが私を正しい方向に向けることができますか?
[〜#〜] update [〜#〜]
新しいクラスライブラリプロジェクトをすぐに作成してみて、WPFユーザーコントロールを追加し、System.Xamlへの参照を追加しましたが、同じ問題があります。
Visual Studio 2015でこの問題が発生した場合は、追加してみてください(まだ追加されていない場合)System.Xaml
プロジェクトへの参照。 Visual Studioは、参照エラーを表示できません。
追加 - System.Xaml
およびUIAutomationProvider
プロジェクトへの参照、その後の明確な解決策とその後の再構築
追加 System.Xaml
およびUIAutomationProvider
参照、そしてVisual Studioの再起動問題を解決します。
VS2017(15.3.5)では、編集中のUserControlのベースUserControl/Windowが同じライブラリ/ exeにある場合にこの問題が発生します。 VSを起動した後、数分間は問題ありません。その後、バックグラウンドで何かがひっくり返り、XAMLファイル全体が青くなります。コンパイルすると消え、入力を開始するとすぐに元に戻ります。 Intellisenseは引き続き動作しますが、XAMLエディターはほとんど使用できなくなります。
修正する唯一の方法は、基本クラスを別のライブラリに移動することです。
System.Xaml
を削除してから、再度追加してください。
例のような新しいContentプロパティを公開してみて、ContentPropertyAttributeをクラスに使用してください。助けてくれた私にとって。 VS 2017で問題が発生しました。
[ContentProperty( "Content" )]
public class MyUserControl: UserControl
{
public new Object Content
{
get => base.Content;
set => base.Content = value;
}
...
}
ソリューションとして参照の欠落が言及されていますが、参照のクラスのあいまいさを解決する必要がある場合もあることを発見しました。
私にとって、この問題は、System.Windows.Markup
名前空間で独自のContentPropertyAttribute
を定義した外部ライブラリが原因で、コンテンツ属性が完全に失敗したために発生しました。参照を削除すると問題は解決しますが、それがオプションでない場合は、代わりに参照のプロパティで namespace alias を設定する必要があります。
既に指摘された参照を追加することに加えて、ソリューションを閉じて再度開く必要がありました。これでも解決しない場合は、Visual Studioを再起動します。
だから、これは私が何も変更せずに完全に機能するように見えるため、コーディング料金は一晩であったようです、非常に奇妙ですが、少なくとも今は続けることができます!