绑定时出现方法或操作未实现错误

2023-11-26

我目前正在开发一个 Visual Studio 插件(VSPackage),它最终应该能够可视化调用关系。为了代表他们我想用图#库它管理图形(避免重叠边缘等)。 不幸的是,我在运行时在 XAML 中收到以下错误消息:

XamlParseException:该方法或操作未实现。

错误出现在<graph:CallRelationGraphLayout Graph="{Binding RelationGraph}"/> tag.

<UserControl x:Class="Biocoder.InteractiveExploration.View.ExplorationControl"
         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:graphsharp="clr-namespace:GraphSharp.Controls;assembly=GraphSharp.Controls"
         xmlns:zoom="clr-namespace:WPFExtensions.Controls;assembly=WPFExtensions"
         xmlns:graph="clr-namespace:Biocoder.InteractiveExploration.Graph"
         xmlns:viewmodels="clr-namespace:Biocoder.InteractiveExploration.ViewModel"
         xmlns:controls="clr-namespace:Biocoder.InteractiveExploration.Controls" mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">



<UserControl.DataContext>
    <viewmodels:ExplorationToolViewModel/>
</UserControl.DataContext>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <zoom:ZoomControl Grid.Row="1"
                      Zoom="0.2"
                      ZoomBoxOpacity="0.5"
                      Background="Yellow">

        <graph:CallRelationGraphLayout Graph="{Binding RelationGraph}"/>

    </zoom:ZoomControl>

</Grid>

</UserControl>

我还创建了自己的顶点、边和图形布局类。我的图最终应该表示方法(顶点)之间的调用关系(边)。

MethodVertex.cs

public class MethodVertex
{
    public string ID { get; private set; }
    public bool IsMale { get; private set; }

    public MethodVertex(string id, bool isMale)
    {
        ID = id;
        IsMale = isMale;
    }

    public override string ToString()
    {
        return string.Format("{0}-{1}", ID, IsMale);
    }
}

RelationEdge.cs

public class RelationEdge : Edge<MethodVertex>
{
    public string Id { get; private set; }

    public RelationEdge(string id, MethodVertex source, MethodVertex target)
        : base(source, target)
    {
        Id = id;
    }
}

调用RelationGraphLayout.cs

public class CallRelationGraphLayout : GraphLayout<MethodVertex, RelationEdge, CallRelationGraph>
{}

CallRelationGraph.cs

public class CallRelationGraph : BidirectionalGraph<MethodVertex, RelationEdge>
{
    public CallRelationGraph()
    {}

    public CallRelationGraph(bool allowParallelEdges)
        : base(allowParallelEdges)
    { }

    public CallRelationGraph(bool allowParallelEdges, int vertexCapacity)
        : base(allowParallelEdges, vertexCapacity)
    {}
}

In the 探索工具视图模型我将 RelationGraph 声明如下:

private CallRelationGraph _relationGraph;
public CallRelationGraph RelationGraph
{
    get { return _relationGraph; }
    set
    {
        if (value != _relationGraph)
        {
            _relationGraph = value;
            NotifyPropertyChanged("RelationGraph");
        }
    }
}

public event PropertyChangedEventHandler PropertyChanged;

public void NotifyPropertyChanged(string propertyName)
{
    if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

我也许还应该提到的是,有时会显示以下错误,但项目会编译并运行。

GenericArguments[1],“Biocoder.InteractiveExploration.Graph.RelationEdge”,在“GraphSharp.Algorithms.Layout.ILayoutAlgorithm`3[TVertex,TEdge,TGraph]”上违反了类型“TEdge”的约束。

也许它是问题的根源,但到目前为止我忽略了它,因为它编译了并且我做了与此相对应的事情tutorial.

奇怪的是,它实际上可以在使用 Graph# 提供的 DLL 的普通 WPF 应用程序中工作。当我离开图形属性时,错误不会显示,所以我猜它与图形属性有关。关于如何解决这个问题有任何提示吗?

预先非常感谢您!


我在 VSPackage 中使用 Graph# 时遇到了同样的问题。我能够通过不使用图表的绑定,而是通过分配来解决这个问题Graph代码隐藏中的属性。

这导致了分配 WPFExtensions 程序集时无法加载的异常Graph财产。我怀疑其原因是在 GraphSharp.Controls 中,在 XAML 中使用了程序集,但在编译时未添加引用,因为代码中没有引用。我可以通过在分配之前添加以下行来解决此问题Graph财产:

var a = System.Reflection.Assembly.Load("WPFExtensions, Version=1.0.3437.34043, Culture=neutral, PublicKeyToken=null");

此行在 WPF 尝试根据 XAML 中的引用加载 WPFExtensions 库之前加载它。随后,图表被展示出来。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定时出现方法或操作未实现错误 的相关文章

随机推荐

  • 以编程方式生成 BPEL 文件?

    有没有一种方法可以在 Java 中以编程方式生成 BPEL 我尝试使用 BPEL Eclipse Designer API 编写以下代码 Process process null try Resource Factory Registry
  • 精确为零的浮点/双精度相等

    我有一个使用的算法floats or doubles执行一些计算 Example double a double b double c double result c b a if result gt 0 result lt small n
  • 使用操作按钮启用和禁用侧边栏切换按钮

    我正在寻找一个代码片段 使用它 我可以启用 禁用闪亮仪表板标题中的侧边栏切换按钮 library shiny library shinydashboard library shinyjs ui lt shinyUI dashboardPag
  • 在Android中创建文件夹[重复]

    这个问题在这里已经有答案了 import java io File File folder new File Environment getExternalStorageDirectory TollCulator boolean succe
  • 我如何知道代码中的哪些部分从未被使用过?

    我有遗留的 C 代码 我应该从中删除未使用的代码 问题是代码库很大 我如何找出哪些代码从未被调用 从未使用过 未使用的代码有两种 本地的 也就是说 在某些函数中 某些路径或变量未使用 或使用但没有任何意义 例如已写入但从未读取 全局对象 从
  • 在rstudio中使用knitr编译pdf时出错

    我已经安装了软件包Sweave也knitr在 Linux mint 和 Windows 7 上都可以运行 并且它在 Windows 上运行良好 但在 Linux 中使用 rstudio 时失败 安装完pkgs后 我写了一个简单的dw Rnw
  • 如何从计数器上删除 Disqus 反应?

    向 Stackoverflow 忍者提出两个问题 我有一个使用 Disqus 的博客 但是 我使用的主题没有空间容纳 反应 Twitter 数量 只有空间容纳评论数量 好的 基本上我没有足够的空间来保留为 Disqus 提供的 反应 有谁知
  • JPanel 中的 Java Linux 终端

    我正在制作一个脚本编辑器 希望能够运行 Bash Shell Python 等 程序中的脚本 到目前为止 我有办法运行它们 但是脚本没有办法让用户输入 这是代码 package com hightide ui terminal import
  • JavaScript 运行时错误:无法添加动态内容

    我正在制作一个 javascript 地铁应用程序 并且有一些如下代码 当我尝试运行时 它给了我一个相当长的错误 ms appx a375ffac 3b69 475a bd53 ee3c1ccf4c4e default html 中第 20
  • 如何制作“只读”文件?

    我正在使用 C StreamWritier班级 问题 如何将文件设置为只读 以便任何人都无法删除或写入它 如何制作隐藏文件 我正在像这样创建文件 private void button1 Click object sender EventA
  • 在 Cucumber Ruby 中使用 Selenium ChromeDriver 在 W3C 模式下无法调用非 W3C 标准命令 (Selenium::WebDriver::Error::UnknownCommandError)

    我们有 Cucumber Ruby 自动化框架 我们在 Jenkins 上的 Docker 中的 Chrome 无头浏览器上运行了一些测试 几天前 我们开始收到错误 此版本的 ChromeDriver 仅支持 Chrome 版本 75 这次
  • DllImport 生成 System.DllNotFoundException

    我在尝试使用非托管代码时遇到一些困难dll来自我的应用程序 用 C 框架 4 0 编写 我正在使用dll导入如下 DllImport C MGW SDK dll EntryPoint fInicializaSDK public static
  • 保持用户登录状态 - FormsAuthentication

    我最难弄清楚这一点 我正在使用表单身份验证 当用户登录并检查记住我时 我希望用户保持登录状态 24 小时 问题是 无论我做什么 用户都会在 30 分钟后自动注销 我们用户选择记住我 我设置了一个持久 cookie 在 24 小时后过期 我可
  • 使用与多个实体管理器的关系

    我想知道是否可以在驻留在不同数据库中的两个实体之间创建关系 例如 如果我们采用此处找到的解决方案http symfony com doc current cookbook doctrine multiple entity managers
  • 将 CSS 插入到 UIWebView / WKWebView 中加载的 HTML 中

    我成功地获取 HTML 内容并显示到我的 UIWebView 中 但想要通过添加外部 CSS 文件来自定义内容 我只能更改文本和字体的大小 我尝试了所有可能的解决方案来进行更改 但它不起作用 它没有显示任何更改 下面是我的代码 HTMLNo
  • Guice 3.0 - 启动时出现 ArrayIndexOutOfBoundsException?

    为什么 Guice 3 0 对于错误配置的组件抛出此异常而不是格式化消息 例如缺少 Inject Exception in thread main com google inject internal util ComputationExc
  • 如何超过方法代码的 65535 字节限制

    我有一个产品列表 但 Java 抱怨该方法超出了 65535 字节的限制 如何添加更多字数并克服限制 public class ProductList extends Activity List view private ListView
  • 在 Java 中调整大小时绘制的内容不可见

    请注意 我没有在 Windows 机器上测试过这个 只在 Mac 机器上测试过 我不太确定这是否也会发生在 Windows 机器上 当我调整 Java 应用程序的大小时 内容是不可见的 我已经找到解决方法了after调整大小 但没有whil
  • 使用 webpack 时 Node 找不到模块“fs”

    我正在使用 node js 和 webpack 创建捆绑包 据我所知 node js 应该包含fs用于管理文件的模块 然而当我打电话时require fs 我得到一个Cannot find module fs 错误 我应该怎么办 我自己在与
  • 绑定时出现方法或操作未实现错误

    我目前正在开发一个 Visual Studio 插件 VSPackage 它最终应该能够可视化调用关系 为了代表他们我想用图 库它管理图形 避免重叠边缘等 不幸的是 我在运行时在 XAML 中收到以下错误消息 XamlParseExcept