我的 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# 接口尝试相同的操作,则不会出现错误。
有人有什么建议吗?