XNA ベースのタイル エディター用に作成したユーザー コントロールがあります。これは、現在 WPF アプリケーションでホストしようとしている winforms ベースのコントロールです。
WindowsFormsHost コントロールを使用して、winforms ユーザー コントロールを埋め込みます。winforms ユーザー コントロールには、Microsoft.Xna.Framework.Color 型の XnaBackground というカスタム プロパティがあります。IntelliSense の XAML でプロパティを確認できますが、設定しようとすると、XAML ウィンドウに「"Microsoft.Xna.Framework.Blue" を変換できません」というメッセージが表示されます。
カスタム IValueConverter を使用しようとしましたが、プロパティは依存関係プロパティではなく、コントロールも依存関係オブジェクトではないため、バインディングは機能しません。
winforms コントロールのプロパティ宣言は次のとおりです。
[Category("Appearance"), DescriptionAttribute("Gets/Sets a value indicating the background color to use.")]
[Bindable(true)]
public Color XnaBackground { get; set; }
そして、これが私の WPF アプリケーションの XAML です。
<Window x:Class="TileEditorWPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TileEditorWPF"
xmlns:winforms="clr-namespace:TileDisplay;assembly=TileDisplay"
Title="MainWindow" Height="600" Width="800" Loaded="WindowLoaded">
<Window.Resources>
<local:XnaColorConverter x:Key="colorConverter" />
</Window.Resources>
<DockPanel LastChildFill="true">
<WindowsFormsHost Name="windowsFormsHost1" DockPanel.Dock="Top"
Background="Transparent"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" >
<winforms:TileDisplayControl XnaBackground="Blue" x:Name="tileDisplay1" OnDraw="TileDisplayControl_OnDraw" OnInitialize="TileDisplayControl_OnInitialize" />
</WindowsFormsHost>
</DockPanel>
私は WPF の専門家ではないので、答えが明らかな場合はご容赦ください。私は過去 4 時間頭をぶつけていましたが、Google 検索はどこにも行きませんでした。これは非常にニッチな問題であるため、この特定のテーマに関するトレンドを見つけるのは困難です。