如何将多边形绑定到 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? 的相关文章

  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • 是否允许将类模板类型参数键入相同的名称?

    这似乎可以在 MSVC 中按预期编译甚至工作 但它是合法的 C 代码吗 它是否能保证执行此处所期望的操作 即将模板类型导出到结构体的同名用户 template
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 方法“xxx”不能是事件的方法,因为该类派生的类已经定义了该方法

    我有一个代码 public class Layout UserControl protected void DisplayX DisplayClicked object sender DisplayEventArgs e CurrentDi
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 在简单注入器中注册具有多个构造函数和字符串依赖项的类型

    我正在尝试弄清楚如何使用 Simple Injector 我在项目中使用了它 注册简单服务及其组件没有任何问题 但是 当组件具有两个以上实现接口的构造函数时 我想使用依赖注入器 public DAL IDAL private Logger
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 可观察集合未因 UI 更改而更新

    我正在尝试将可观察集合绑定到用户控件 但它不会在用户更改时更新 但在通过代码更改用户控件时它会更新 以下是我尝试过的一个例子 它可能有点长 但它正在运行 因此您可以按原样复制并粘贴代码 请参阅帖子末尾我的问题 客户 cs using Sys
  • 如何用 C 语言练习 Unix 编程?

    经过五年的专业 Java 以及较小程度上的 Python 编程并慢慢感觉到我的计算机科学教育逐渐消失 我决定要拓宽我的视野 对世界的一般用处 并做一些 对我来说 感觉更重要的事情就像我真的对机器有影响一样 我选择学习 C 和 Unix 编程
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • 如何使用收益返回和递归获得字母的每个组合?

    我有几个像这样的字符串列表 可能有几十个列表 1 A B C 2 1 2 3 3 D E F 这三个仅作为示例 用户可以从几十个具有不同数量元素的类似列表中进行选择 再举个例子 这对于用户来说也是一个完全有效的选择 25 empty 4 1
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task

随机推荐

  • 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