如何添加实现C 接口的标签
How to add a label that implements a c++ interface?
我的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#接口尝试同一件事,则没有错误。
有人有任何建议吗?
开发WPF GUI的最简单方法是使用Model-View-ViewModel模式。我建议将WPF元素传递到托管的C 库中,以更新其属性。也不建议覆盖OnRender()。我建议您查看一些WPF介绍性教程,例如这个。如果您要在WPF中开发,则需要熟悉" WPF思维方式"和WPF框架。
我认为可能是C 托管接口正在使用托管的C 语言功能,而C#或WPF不可用,请尝试在您的C 接口中添加[ClScompliant]属性可以然后尝试编译并查看编译器所说的话。我也要考虑@highcore所说的话。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- C 和 C++ 中开关语句的案例标签的常量值,但显示不同的行为
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如何绑定 C++ gRPC 客户端的网络接口
- 如何正确指定 goto 语句的标签?
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- 带有进度表的 curl 多接口程序
- 使用g++静态初始化带有命名标签的嵌套C++结构
- 使用 AWS c++ 接口将文件上传到 s3 时内容类型标签不正确
- 标签调度以防止接口更改
- 如何添加实现C 接口的标签