私は C# の経験が非常に限られているため、よくある間違いかもしれませんが、他のトピックで答えを見つけることができませんでした。
私の WPF アプリケーションでは、デフォルトの WPF ラベルから継承し、dll (マネージ C++) で定義されているインターフェイスを実装するラベルを作成しようとしています。私の目標は、このオブジェクトのインスタンスを C++ コードに渡し、別のスレッドを使用せずに UI を更新することです。
using System;
using System.Windows.Controls;
using System.Windows;
namespace WPFTest
{
//my class : default WPF Label, C++ interface (dll)
class ObservationResultLabel : Label, IObservationResult
{
Boolean od;
public Boolean ObjectIsDetected(){
return od;
}
public void setObservationResult(Boolean od){
this.od = od;
this.Dispatcher.Invoke((Action)(() =>
{
this.InvalidateVisual();
}));
}
protected override void OnRender(
System.Windows.Media.DrawingContext drawingContext){
if (od){
Visibility = Visibility.Visible;
}else{
Visibility = Visibility.Hidden;
}
base.OnRender(drawingContext);
}
}
}
しかし、ビルドしようとすると、「「ObservationResultLabel」タイプの値は、「UIElementCollection」タイプのコレクションまたは辞書に追加できません。エラー。C# インターフェイスで同じことを試しても、エラーは発生しません。
誰か提案はありますか?