如何将多边形绑定到 WPF 中现有的 PointCollection?

2023-12-11

我当前的实现不会在表单上显示任何内容,即使我认为有界的集合有数据(我在调试中检查)。

这是一些代码:

    public event PropertyChangedEventHandler PropertyChanged;
    PointCollection imagePoints;
    public PointCollection ImagePoints
    {
        get
        {
            return this.imagePoints;
        }
        set
        {
            if (this.imagePoints != value)
            {
                this.imagePoints = value;
                if (this.PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("ImagePoints"));
                }
            }
        }
    }

以及相应的xaml:

<Polygon x:Name="imagePolygon" Points="{Binding ImagePoints}" Stretch="Fill" Fill="Black" Opacity="0.8" />

现在,我通过编写代码完成了所有绑定。在这个example,它工作得很好,但在我的例子中,这些点没有显示在多边形上。

有什么智慧的珍珠吗?

编辑:这是完整的xaml代码

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Class="WpfApplication2.HistogramWindow"
    Title="HistogramWindow" Height="436" Width="604">
<Grid>
    <TabControl HorizontalAlignment="Left" Height="406" VerticalAlignment="Top" Width="596" >
        <TabItem x:Name="imageTab" Header="Full Image" Height="23" VerticalAlignment="Top">
            <Border BorderBrush="Black" BorderThickness="1" Margin="10">
                <Polygon x:Name="imagePolygon" Points="{Binding ImagePoints}" Stretch="Fill" Fill="Black" Opacity="0.8" />
            </Border>
        </TabItem>
        <TabItem x:Name="boneTab" Header="Bone">
            <Border BorderBrush="Black" BorderThickness="1" Margin="10">
                <Border.BindingGroup>
                    <BindingGroup/>
                </Border.BindingGroup>
                <Polygon x:Name="bonePolygon" Points="{Binding BonePoints}" Stretch="Fill" Fill="Black" Opacity="0.8" >

                </Polygon>
            </Border>
        </TabItem>
        <TabItem x:Name="fatTab" Header="Fat" HorizontalAlignment="Left" Height="20" VerticalAlignment="Top" Width="57">
            <Border BorderBrush="Black" BorderThickness="1" Margin="10">
                <Polygon x:Name="fatPolygon" Points="{Binding FatPoints}" Stretch="Fill" Fill="Black" Opacity="0.8" />
            </Border>
        </TabItem>
    </TabControl>

</Grid>

编辑:修改配置文件后,我在输出窗口中找到:

System.Windows.Data Information: 41 : BindingExpression path error: 'ImagePoints'   property not found for 'object' because data item is null.  This could happen because the data provider has not produced any data yet. BindingExpression:Path=ImagePoints; DataItem=null; target element is 'Polygon' (Name='imagePolygon'); target property is 'Points' (type 'PointCollection')
System.Windows.Data Information: 20 : BindingExpression cannot retrieve value due to missing information. BindingExpression:Path=ImagePoints; DataItem=null; target element is 'Polygon' (Name='imagePolygon'); target property is 'Points' (type 'PointCollection')
System.Windows.Data Information: 21 : BindingExpression cannot retrieve value from null data item. This could happen when binding is detached or when binding to a Nullable type that has no value. BindingExpression:Path=ImagePoints; DataItem=null; target element is 'Polygon' (Name='imagePolygon'); target property is 'Points' (type 'PointCollection')
System.Windows.Data Information: 10 : Cannot retrieve value using the binding and no valid fallback value exists; using default instead. BindingExpression:Path=ImagePoints; DataItem=null; target element is 'Polygon' (Name='imagePolygon'); target property is 'Points' (type 'PointCollection')

我不确定为什么您会收到绑定错误,但乍一看您的代码看起来不错。

我写了一小段可以运行的代码,所以你可以检查一下,看看是否遗漏了一些东西。我想应该和你的有点相似吧。。

XAML的相关部分:

<TabItem x:Name="imageTab" Header="Full Image" Height="23" VerticalAlignment="Top">
    <Border BorderBrush="Black" BorderThickness="1" Margin="10">
        <StackPanel>
            <Polygon x:Name="imagePolygon" Points="{Binding ImagePoints}" Stretch="Fill" Fill="Black" Opacity="0.8" />
            <Button Content="Set new points" Click="btnSetNew" />
        </StackPanel>
    </Border>
</TabItem>

窗口的隐藏代码:

public partial class Window1 : Window, INotifyPropertyChanged
{
    public Window1()
    {
        InitializeComponent();

        this.ImagePoints = new PointCollection
            (new [] { new Point(1, 2), new Point(34, 12), new Point(12, 99) });

        //Important - maybe you missed this?
        this.DataContext = this;
    }

    public event PropertyChangedEventHandler PropertyChanged;
    PointCollection imagePoints;
    public PointCollection ImagePoints
    {
        get
        {
            return this.imagePoints;
        }
        set
        {
            if (this.imagePoints != value)
            {
                this.imagePoints = value;
                if (this.PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("ImagePoints"));
                }
            }
        }
    }

    private void btnSetNew(object sender, RoutedEventArgs e)
    {
        this.ImagePoints = new PointCollection(
            new[] { new Point(23, 2), new Point(12, 556), new Point(4, 89) });
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将多边形绑定到 WPF 中现有的 PointCollection? 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • tkinter 中是否可以有一个垂直方向的按钮?

    是否可以定向tk Button or ttk Button垂直 就像定向一个tk Scrollbar在某种方式self scrlbr tk Scrollbar master orient vertical 试过tk Button args
  • Python Tkinter:如何配置循环生成的按钮?

    我正在使用 Python 2 7 和 Tkinter 为我的代码制作 GUI 在某一时刻 框架中充满了许多循环按钮 当我单击其中一个按钮时 该函数需要知道它是从哪里调用的 所以我在谷歌上搜索并找到了这种很好的方法 def generate
  • 线程“AWT-EventQueue-0”中的异常 java.lang.NoClassDefFoundError

    我正在尝试阅读 docx文件到一个JTextPane 但它给出了一些例外 我在用POI图书馆 我应该怎么办 请帮帮我 这是我的代码 file new File C Users Siddique Ansari Documents CV Par
  • 尝试为 Windows 扩展安装 Python 时出现值错误

    我已经安装了 Microsoft Visual Studio 2008 我下载了 zip 文件用于 Windows 的 Python 扩展并将内容提取到我的 Python27 文件夹中 现在有一个名为 pywin32 214 的子文件夹 3
  • 更新 Django Rest Framework 中的多对多关系

    在我的 django 应用程序中 我之间存在多对多关系Orders and Packages 一个订单可以有多个包裹 我想了解更新和创建方法 模型 py class Package models Model prod name models
  • 当 iframe 托管代码无法访问的外部网站时获取 iframe 内容的高度[重复]

    这个问题在这里已经有答案了 可能的重复 让 iframe 适合其内容高度 正如问题标题中所描述的那样 我正在寻找一种方法来根据我的 iframe 托管的网站的高度来调整 iframe 的高度 因为我需要摆脱 iframe 的垂直滚动 同时
  • Facebook PHP SDK:上传活动封面照片

    我使用 facebook php sdk 为页面创建一个事件 现在正如所描述的here可以将图片上传到活动 问题是 这是个人资料图片 但一年多以来 Facebook 为活动提供了新的大幅封面照片 我想上传一张图片到那里 而不是作为个人资料图
  • Python GUI 中的实时绘图

    我正在尝试编写一个 Python GUI 并且需要进行实时绘图 我目前有一个程序可以从我正在使用的机器接收数据 我希望能够在收到机器输出的值时绘制它们 我一直在研究 从迄今为止的发现来看 在我看来 tkinter 或任何库都不能在 GUI
  • Angular ng-table 动态标头在内部不起作用

    我正在将 ng table 与动态列一起使用 使用创建者的示例 位于http bazalt cms com ng table example 20 它工作得很好 直到我尝试用 transclude 包裹指令 女巫导致标题消失 如上所示htt
  • 通过整数数组中的索引查询表

    在我从 VB NET 转换数据 to timestamp 和 to number 获得出色的结果后 我想知道 PostgreSQL 是否有可能通过来自 NET 的整数数组查询表索引 比如说 我的数组充满了 1 3 5 6 9 Postgre
  • SQLite 整数数据类型(如 int、integer、bigint 等)之间有什么区别?

    sqlite 中整数数据类型有什么区别 INT INTEGER TINYINT小智中薄荷 BIGINT无符号大整型 INT2 INT8 哪一个可以存储 32 位整数 哪一个可以存储 64 位值 支持128位吗 我现在发现整数数据大小有点令人
  • 为什么要封一个班级?

    我想听听 Net 框架中大量密封类背后的动机是什么 密封一个类有什么好处 我无法理解不允许继承如何有用 而且很可能不是唯一一个与这些类作斗争的人 那么 为什么框架要这样设计 难道这不是一个突破性的改变来揭开一切吗 除了邪恶之外 一定还有其他
  • 如何让我的简单扭曲代理工作?

    我正在尝试利用扭曲网框架 请注意三行注释 line1 line2 line3 我想创建一个代理 网关 它将根据 url 将请求转发到两个服务器之一 如果我取消注释 1 或 2 并注释其余部分 请求将被代理到正确的服务器 但是 当然 它不会根
  • 如何根据 iOS 中的当前设备加载单个类的不同 xib?

    我在视图控制器中有完整的代码 所以 我需要在 iPad iPhone 和 iPod 中显示相同的输出 因此 我使用单视图控制器来处理数据 为此 我如何选择 ipod 或 ipad 取决于 iOS 中当前设备的不同 XIB 我不想再创建一个视
  • 如何本地化 Inno Setup 安装文件的 VersionInfo?

    我正在创建一个根据用户语言具有不同名称的应用程序 例如 该软件称为 设备模拟器 英语和 Ger teemulation 在德国 我想在安装文件的版本信息中反映不同的名称 右键单击 gt 属性 gt 详细信息 选项卡 到目前为止 我在 Inn
  • 使用 jQuery 检测元素内容更改

    change 函数可以工作并检测表单元素的变化 但是有没有办法检测 DOM 元素的内容何时发生变化 这不起作用 除非 content是一个表单元素 content change function do something 我希望在执行以下操
  • 什么是最小有效 UNC 路径?

    我想创建一个 除其他外 解析 UNC 路径的库 但我不完全理解语法 常见的例子是 server share path 有效的文件路径需要所有这些吗 我可以导航到 server 没有share 使用 Windows 资源管理器 但我假设它使用
  • 我们如何使用 Windows 身份验证保护 Swagger UI

    我们有一个 Net Core 2 2 Web Api 它使用 swagger ui 来公开 Web Api 定义 我们希望仅向特定 AD 组内的用户保护此端点 我们目前使用 Windows 和匿名身份验证 问题是我们无法强制 Swagger
  • 为什么函数参数中的逆变类型参数被视为处于“out”位置?

    我很难用英语描述 但问题是 class Consumer
  • 如何将多边形绑定到 WPF 中现有的 PointCollection?

    我当前的实现不会在表单上显示任何内容 即使我认为有界的集合有数据 我在调试中检查 这是一些代码 public event PropertyChangedEventHandler PropertyChanged PointCollection